@@ -177,9 +177,9 @@ Vim9 関数 ~
177177- コンパイルされた関数から呼び出されたり、関数リファレンスとして使用されたとき
178178 (引数と戻り値の型をチェックできるようにするため)
179179 *E1091* *E1191*
180- もし関数のコンパイルに失敗した場合は、次その関数が呼ばれるときまで再度コンパイ
181- ルを試みることはなく 、代わりに "E1091: Function is not compiled: {name} " とい
182- うエラーを発生させます 。
180+ もし関数のコンパイルに失敗した場合は、次その関数が呼ばれるときも再度コンパイル
181+ を試みることはなく 、代わりに "E1091: Function is not compiled: {name} " という
182+ エラーを発生させます 。
183183{訳注: 日本語メッセージの場合: "E1091: 関数はコンパイルされていません: {name} "}
184184コンパイルはまだ作成されていないユーザーコマンドと遭遇したときに失敗するでしょ
185185う。この場合は `execute ()` を使うことでエラーを関数の実行時に発生するようにす
@@ -266,6 +266,14 @@ Vim9 script でスクリプト直下に `:function` や `:def` を使って関
266266 var Fok = function(Inner) # OK
267267 var Fbad = function('Inner') # 動作しない
268268
269+ 詳細: これは "Inner" が実際には生成された名前をもつ関数への関数参照になるから
270+ です。
271+
272+ 関数の中でスクリプトローカル関数を定義することはできません。代わりにローカル関
273+ 数を定義して、それをスクリプトローカルな Funcref (これはスクリプトレベルで定義
274+ されていないといけません) に代入することができます。グローバル関数は前置詞
275+ "g:" を使うことで定義できます。
276+
269277関数をプリフィックス "s:" や "g:" をつけずに参照した場合、Vim は関数を次のよう
270278に探します:
271279- 同じ関数の中、ブロックスコープの中
@@ -288,9 +296,9 @@ Vim9 script において、スクリプトレベルでの前置詞 "s:" の使
288296Vim script 内ではスクリプトローカルな関数と変数に対して "s:" を使いますが、
289297Vim9 script 内では使いません。これはこのドキュメントの以下の説明でも同様です。
290298
291- 旧来の Vim script スタイルの関数内においては、スクリプトローカルなアイテムに
292- 対しての "s:" の指定は従来通り必要です 。これはスクリプトが Vim9 script であろ
293- うが旧来の Vim script であろうが関係ありません 。
299+ 旧来の関数内においては、スクリプトローカルなアイテムに対しての "s:" の指定は従
300+ 来通り必要です 。これはスクリプトが Vim9 script であろうが旧来の Vim script で
301+ あろうが関係ありません 。
294302
295303いずれの場合でも、関数は使用されるよりも前に定義されていなくてはなりません。使
296304用されるタイミングは、コマンド `:defcompile ` によってコンパイルされるとき、ま
@@ -1566,7 +1574,7 @@ script の関数内で宣言されたときでも同様です。
15661574 変数の宣言においては、推測された型は重要です: >
15671575 var ll = [1, 2, 3]
15681576 ll->extend(['x']) # エラー、'x' は数値ではない
1569- 理由は、宣言が数値のリストの宣言のようで 、それゆえ以下と等しいからです: >
1577+ これは宣言が数値のリストのように見えるためで 、それゆえ以下と等しいからです: >
15701578 var ll: list<number> = [1, 2, 3]
15711579 もし、もっと寛容なリストが欲しいのであれば、型を宣言する必要があります: >
15721580 var ll: list<any = [1, 2, 3]
0 commit comments