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で質問しましょう!
似たような質問が見つかりました
- Java プログラミング Java 2 2024/01/26 23:24
- C言語・C++・C# C言語の関数と配列に関する質問 8 2024/02/27 15:45
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- マウス・キーボード キーボードについて。 1 2023/12/07 21:19
- 生物学 生物 補足に載せた写真の黄色下線部が分からないです。 私は背側を黄色で囲った部分だと思って教科書呼ん 1 2023/09/03 23:50
- その他(趣味・アウトドア・車) Amazonの返品、交換 昨日、コントローラを注文して 午前中に届いた物を確認した所 説明と写真に書 2 2024/02/14 15:16
- 高校 赤い下線部分の計算が分かりません。心優しい方、お手数ですが、写真で説明していただけると嬉しすぎます 2 2023/08/06 15:17
- Java javaについて 1 2023/12/06 20:08
- C言語・C++・C# C言語初心者です、、、お助けください 2 2023/03/14 20:08
- アンテナ・ケーブル 急にテレビの映りが悪くなりました。ブースターという物を買ってみたいのですが、選び方を教えて下さい。 6 2023/12/22 18:25
このQ&Aを見た人はこんなQ&Aも見ています
-
Ruby newメソッド
Ruby
-
アセンブリ言語について。
その他(プログラミング・Web制作)
-
ルビー言語 ライブラリー
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
ruby while式
Ruby
-
12
ルビー言語 csvファイル part2
Ruby
-
13
Ruby require ライブラリー
Ruby
-
14
c++の勉強方法を教えてくださいプログラミングをやった事がなく1から勉強を始めようと思います1日1時
C言語・C++・C#
-
15
HTML&CSSとHTML5&CSS3の違いについて。
HTML・CSS
-
16
IT業で開発をされてる方々に質問なんですが、一日に書かれるコード数ってどれくらいですか? また、最近
その他(プログラミング・Web制作)
-
17
HTML&CSSとHTML5&CSS3の違いについて。
HTML・CSS
-
18
HTML&CSSについて。
HTML・CSS
-
19
Ruby 変数 用途と違い
Ruby
-
20
算術演算子「¥」の意味について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(再質問)エクセルのマクロボ...
-
C言語の入力した文字を反転させ...
-
Ruby require ライブラリー
-
ruby OpenURI::Meta
-
ruby while式
-
ruby loopメソッド 変数(再喝)
-
ruby 配列
-
ruby loopメソッド 変数
-
ruby クラス・オブジェクト・イ...
-
ルビー言語 ライブラリー 追記
-
プログラミング講師はまだ需要...
-
7セグメント LED ディスプレイ ...
-
パイソンエラーについて
-
1、Rstudioで回帰直線を求める...
-
VBScriptでExcel(2019)上のデー...
-
100万件越えCSVから条件を満た...
-
ターミナルからemacsへのコピペ...
-
ruby raise句
-
ruby begin句
-
ruby ensure句
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Ruby require ライブラリー
-
(再質問)エクセルのマクロボ...
-
ruby loopメソッド 変数(再喝)
-
ruby loopメソッド 変数
-
ルビー言語 ライブラリー(再々...
-
ruby while式
-
ルビー言語 ライブラリー 追記
-
ビーリアルのユーザー名を変え...
-
ruby OpenURI::Meta
-
ruby クラス・オブジェクト・イ...
-
ruby begin句
-
ruby raise句
-
ruby ensure句
-
ruby 配列
-
ルビー言語 csvファイル part2
-
ルビー言語 csvファイル 続き(...
-
ルビー言語 csvファイル 続き
-
ルビー言語 ライブラリー
-
パソコンのスクリーンセーバー...
-
ルビー言語 ライブラリー
おすすめ情報
すみません。これが = を使ったデフォルト値の指定との違いです。の所の、「これが」と、違いについて、もう少し分かりやすく教えて頂けると幸いです。
迅速な回答ありがとうございます。
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 にカバーされて見えません。
の所の説明は、どう変わるのでしょうか?教えて頂けると幸いです。