1

Moonscript は \ を使用してメソッドを呼び出すため、以下のコードが機能しない理由を誰かに説明してもらえますか:

> file = io\open("mix.exs", "rb")
[string "tmp"]:1: calling 'open' on bad self (string expected, got table)

しかし、ファイルを読み取るためにそれを呼び出すと、それは実行されますか?

> file\read!
"Code.ensure_loaded?(Hex) and Hex.start
4

2 に答える 2

4

このio.open関数は最初の引数として文字列を取得することを期待していますが、io\open( io:openlua 自体と同様に) 実際にioは最初の引数としてテーブルを渡しています。つまり、メソッド呼び出しです。

io\open("file", "mode")/io:open("file", "mode")は . のシンタックス シュガーですio.open(io, "file", "mode")

これが、最初の引数として関数に渡されるfile\read!ため、明示的な引数なしで機能する理由です。fileread("file", "format")

于 2015-02-12T14:23:39.863 に答える