【入門】CommonLisp【質問よろず】
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
550:デフォルトの名無しさん 05/08/08 01:12:30 質問です。 (defun func (x) (setq x 2)) (setq a 1) (func a) などとして、グローバルな変数をfuncの引数にして呼び出した時に そのグローバル変数自体が書き換えられるような、 C言語で例えるならポインタ引数のような使い方をするには どうすればいいのでしょうか? 551:デフォルトの名無しさん 05/08/08 01:20:58 トップレベルで変数を定義して、関数内でsetqなりsetfなりを呼び出せばOK 552:デフォルトの名無しさん 05/08/08 01:28:25 (set x 2) とか (setf (symbol-value x) 2) とか。お好きな方で。 関数に渡すのはシンボルね。 553:デフォルトの名無しさん 05/08/08 01:52:21 call by name にしたいならマクロ (defmacro macro (x) `(setq ,x 2)) (setq a 1) (macro a) a => 2 554:550 05/08/08 04:02:54 ということは、550で書いたコードをそのまま実行すると (func a) の後はaの値は2になっているはずですよね? でもトップレベルでsetqした値、つまり1になっています… ここでどうにかaを2にしたいんですが… 質問の仕方が悪いのかもしれません、すみません
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5388日前に更新/244 KB
担当:undef