For my programming languages course, I'm trying to write some code snippets in languages that use pass by name or pass by value-result, preferably by default, but any language that even supports either of those would be fine. However, I haven't been able to find a single language that supports either of them. Does anyone know of a language that uses pass by value-result or pass by name? Preferably an imperative language.
6 に答える
評価戦略に関するウィキペディアの記事は、値による呼び出しの結果がFortranによってサポートされていることを示唆しています。名前による呼び出しは、algol68でサポートされています。
Cマクロは名前による受け渡しだと思います(もちろんC言語自体ではありません)。私は恐れている値渡し結果の言語を知りません(正直なところ、それが何を意味するのかを知るためにWeb検索をしなければなりませんでした!)。
変数をfortran関数に渡し、そこで変更する場合は、呼び出し元のプログラムでも変更します。
擬似コード:
int j = 1
print j
addOne(j)
print j
出力します:
1
2
CLIPS エキスパート システム言語は名前で渡されると思います。
ここでいくつかの説明を見つけることができるため、Algolは名前による受け渡しをサポートしています
Ada は値渡し/結果渡しをサポートしていると言われましたが、まだ試していません。
Java と C はどちらも値渡し言語です。
C は明らかに値渡し言語です。
Java は常に「プリミティブは値で渡され、オブジェクトは参照で渡される」と言われてきました。しかし、Javaオブジェクトはいつでも参照なので、実際には参照値です。
Java 言語仕様はこれを示しています: http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#37472