No.5ベストアンサー
- 回答日時:
ははは...
def func(n)
p "inner: " + n.to_s
end
n = 3
func(10)
p "outer: " + n.to_s
で十分でしたね。
No.4
- 回答日時:
> func 内部からは同名の引数 arg3 にカバーされて見えません。
> の所が、分かりません。
def func(n)
p "inner: " + n.to_s
end
n = 3
test(10)
p "outer: " + n.to_s
だと何が起こりますか?
プログラム中のどの位置では、どっちの n が見えているか?
という話です。
> 問題の答えは、20,10,333でしょうか?
そのつもりです。
No.3
- 回答日時:
def func(arg1, arg2 = 222, arg3 = 333)
p arg1, arg2, arg3
end
func(arg1=10, arg3=20)
とやったら、プリントされるのは
10, 20, 333
です。
10, 222, 20
ではありません。
Ruby も C と同じで代入は演算子なので
func(arg1=10, arg3=20)
と書くことはできて、
arg1=10
arg3=20
func(arg1, arg3)
と書いたのと同じ意味になります。
ここで arg3=20 の代入が行われた arg3 は
func の外で定義された変数で、func 内部からは
同名の引数 arg3 にカバーされて見えません。
func 側から見ると
func(10,20) と呼び出されたのと同じことになるので、
引数 arg1, arg2 に 10, 20 がセットされ
引数の個数が足りないぶんデフォルトが使われて
引数 arg3 は 333 になります。
呼び出し側で func(arg1=10, arg3=20) と書いても、
func 内部の arg3 が 20 になるわけではないんです。
では問題:
頭記の func を
func(arg3=20, arg1=10) で呼び出したら
何とプリントされるでしょう?
No.2
- 回答日時:
ああ、誤時でわけわからんことになってましたね。
訂正:
キーワード引数を使って def func(arg1,arg2: 222, arg3: 333) とすると、
func(10, arg3: 30) で呼び出すことによって
arg1, arg2, arg3 の値を 10, 222, 30 にしてメソッドfunc を呼ぶことができ、
これが = を使ったデフォルト値の指定との違いです。
No.1
- 回答日時:
def func(arg1, arg2: val) だと、
def func(arg1, arg2 = val) と特に違いはありません。
キーワード引数は、複数個あったとき意味を持ちます。
def func(arg1,arg2 = 222, arg3 = 333) で定義されたメソッドを
func(10, 20) で呼び出すと、
arg1, arg2, arg3 の値を 10, 20, 333 にしてメソッドfunc が呼ばれます。
この形で定義されたメソッドのarg3 に好きな値を与え、
arg2 はデフォルト値222 にして呼び出す方法はありません。
キーワード引数を使って def func(arg1,arg2 = 222, arg3 = 333) とすると、
func(10, arg3: 30) で呼び出すことによって
arg1, arg2, arg3 の値を 10, 222, 30 にしてメソッドfunc を呼ぶことができ、
これが = を使ったデフォルト値の指定との違いです。
: を使ったキーワード引数の指定が 1個だけなら、
: でも = でも呼び出す側から見て同じです。
def func(arg1, arg2: 222) でも、
def func(arg1, arg2 = 222) でも、
func(10) で呼び出せば arg2 には 222 が与えられます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
アセンブリ言語について。
その他(プログラミング・Web制作)
-
Ruby newメソッド
Ruby
-
ルビー言語 ライブラリー
Ruby
-
-
4
プログラミング言語のバージョン確認について。
その他(プログラミング・Web制作)
-
5
ruby loopメソッド 変数
Ruby
-
6
Cのプログラムからアクセスできないファイル名の一括変更方法
C言語・C++・C#
-
7
C言語のことです。写真(見にくくてすいません)の下のプログラムを実行したいのですが四行目がおかしいと
C言語・C++・C#
-
8
HTML &CSSとHTML5&CSS3 違い
HTML・CSS
-
9
perl の open について教えてください。
Perl
-
10
C言語 関数、変数の宣言について
C言語・C++・C#
-
11
ルビー言語 csvファイル part2
Ruby
-
12
ruby while式
Ruby
-
13
Ruby require ライブラリー
Ruby
-
14
HTML&CSSとHTML5&CSS3の違いについて。
HTML・CSS
-
15
IT業で開発をされてる方々に質問なんですが、一日に書かれるコード数ってどれくらいですか? また、最近
その他(プログラミング・Web制作)
-
16
HTML&CSSとHTML5&CSS3の違いについて。
HTML・CSS
-
17
HTML&CSSについて。
HTML・CSS
-
18
以下のプログラムの実行結果はどうなると思いますか? その理由も教えてください。
Visual Basic(VBA)
-
19
算術演算子「¥」の意味について
Visual Basic(VBA)
-
20
Ruby 変数 用途と違い
Ruby
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ruby OpenURI::Meta
-
Ruby require ライブラリー
-
Accessで文字列のバイト数読み込み
-
VBScriptでExcel(2019)上のデー...
-
(再質問)エクセルのマクロボ...
-
英数字を含む文字列(0-9,A-Z)...
-
C言語の入力した文字を反転させ...
-
【メモリ不足で落ちる(python)】
-
WSLのUbuntuで、Railsのインス...
-
ruby while式
-
ruby loopメソッド 変数(再喝)
-
ruby 配列
-
ruby loopメソッド 変数
-
ruby クラス・オブジェクト・イ...
-
ルビー言語 ライブラリー 追記
-
ruby raise句
-
ruby begin句
-
ruby ensure句
-
ルビー言語 ライブラリー(再々...
-
ルビー言語 csvファイル 続き(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Ruby require ライブラリー
-
ruby loopメソッド 変数(再喝)
-
(再質問)エクセルのマクロボ...
-
ruby OpenURI::Meta
-
ruby while式
-
ruby loopメソッド 変数
-
1、Rstudioで回帰直線を求める...
-
パソコンのスクリーンセーバー...
-
ビーリアルのユーザー名を変え...
-
ruby 配列
-
C言語の入力した文字を反転させ...
-
ruby クラス・オブジェクト・イ...
-
ルビー言語 ライブラリー 追記
-
100万件越えCSVから条件を満た...
-
ルビー言語 csvファイル 続き
-
Ruby newメソッド
-
教えてください
-
ruby raise句
-
英数字を含む文字列(0-9,A-Z)...
-
pythonエラー
おすすめ情報
すみません。これが = を使ったデフォルト値の指定との違いです。の所の、「これが」と、違いについて、もう少し分かりやすく教えて頂けると幸いです。
迅速な回答ありがとうございます。
def func(arg1,arg2 = 222, arg3 = 333) で定義されたメソッドを
func(10, 20) で呼び出すと、
arg1, arg2, arg3 の値を 10, 20, 333 にしてメソッドfunc が呼ばれます。
この形で定義されたメソッドのarg3 に好きな値を与え、
arg2 はデフォルト値222 にして呼び出す方法はありません。
の所で、func(10, 20) をfunc(arg1=10,arg3=20)とかには、ならないのでしょうか?教えて頂けると幸いです。
迅速な回答ありがとうございます。質問なのですが、func 内部からは
同名の引数 arg3 にカバーされて見えません。
の所が、分かりません。それと、問題の答えは、20,10,333でしょうか?教えて頂けると幸いです。
迅速な回答ありがとうございます。
所で、プログラムが間違っていませんか?
正しくは、
def func(n)
p "inner: " + n.to_s
end
def test(n)
func(n)
end
n = 3
test(10)
p "outer: " + n.to_s
だと思うのですが。
で、結果は、
"inner: 10"
"outer: 3"
ではないでしょうか?
それで、前者のinnerは、test(n)に、func(n)を代入して、10が出力され、後者のouterは、func(n)が無いため、n=3が代入され、3が出力されると言う事でしょうか?教えて頂けると幸いです。
迅速な回答ありがとうございます。
では問題:
頭記の func を
func(arg3=20, arg1=10) で呼び出したら
何とプリントされるでしょう?
の所で、func(arg1=10, arg3=20)
と書くことはできて、
arg1=10
arg3=20
func(arg1, arg3)
と書いたのと同じ意味になります。
ここで arg3=20 の代入が行われた arg3 は
func の外で定義された変数で、func 内部からは
同名の引数 arg3 にカバーされて見えません。
の所の説明は、どう変わるのでしょうか?教えて頂けると幸いです。