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