関数を定義するためにスコープs:と引数abortを使用することが推奨されるのはいつですか?


7

関数を定義するときは、スコープを使用s:してスクリプトに対してローカルにし、グローバル名前空間で同じ名前の関数を上書きしないようにすることを常にお勧めしますか?
またabort、関数がエラーを検出した場合に備えて、常に引数を使用することをお勧めしますか?

function! s:SomeFunction() abort
    echo "hello world!"
endfunction

スコープs:は良いように見えますが、コードから少し冗長になるのでSomeFunction()、マッピングから呼び出すたびに、プレフィックスを付ける必要があり<SID>ます。

nnoremap {lhs} :<c-u>call <SID>SomeFunction()<cr>

または、変数内にその出力を保存することもできます。

let myvar = <SID>SomeFunction()

使用s:したくない特定のケースおよび/またはabort
もしそうなら、どのような理由で?

回答:


6

s:単にあなたがグローバル名前空間を汚染しないことを意味します。ユーザーが呼び出す必要のない関数の場合は、通常これを行います。abortフラグに関しては、ここにドキュメントが:help :func-abort言うことです:

[abort]引数を追加すると、エラーが検出されるとすぐに関数が中止されます。

エラーが発生したときに関数が設定を行わず、関数を破棄できない場合は、何も壊さない場合は、おそらくそれを使用しても問題ありません。 (つまり、エラーが発生した場合に黙って中止したい場合)


私はベストプラクティスは常にを使用しabort、必要なティアダウンにはtry/ finallyを使用することだと思います。そうではありませんか?
ivan 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.