質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

408閲覧

大文字小文字での定義と挙動の違い ruby

t.s_k

総合スコア61

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2018/10/23 05:55

編集2018/10/23 06:08

大文字小文字定義

(追記 情報に誤りがあります)

上記の質問で、定義部分に大文字を使うと定数、小文字を使うと変数になる、と教えていただいたのですが、
以下のソースで配列の定義に小文字を使うのと大文字を使うのとでは、挙動の違いが発見できなかったのですが、
挙動が同じものと違ってくる定義、メソッド、一体何が違い、どこで判断すれば良いのでしょうか?

index (String)
index (Array)

挙動が同じ(追記 挙動が違うので注意)

rb

1tmp = gets.chomp 2 3le = ["qwertasdfgzxcvb"] 4ri = ["yuiophjklnm"] 5 6def key_check(key) 7 if le.index(key) 8 true 9 elsif ri.index(key) 10 false 11 end 12end 13 14puts key_check(tmp) 15 16#=> 17# 1 18# left 19 20#=> 21# 0 22# right

rb

1tmp = gets.chomp 2 3LE = ["qwertasdfgzxcvb"] 4RI = ["yuiophjklnm"] 5 6def key_check(key) 7 if LE.index(key) 8 true 9 elsif RI.index(key) 10 false 11 end 12end 13 14puts key_check(tmp) 15 16#=> 17# 1 18# left 19 20#=> 21# 0 22# right 23

挙動が違う

rb

1tmp = gets.chomp 2 3LE = "12345" 4RI = "67890" 5 6def key_check(key) 7 if LE.index(key) 8 "left" 9 elsif RI.index(key) 10 "right" 11 end 12end 13 14puts key_check(tmp) 15# => 16# 1 17# left 18 19#=> 20# 9 21# right

rb

1tmp = gets.chomp 2 3le = "12345" 4ri = "67890" 5 6def key_check(key) 7 if le.index(key) 8 "left" 9 elsif ri.index(key) 10 "right" 11 end 12end 13 14puts key_check(tmp) 15# => 16#test.rb:7:in `key_check': undefined local variable or method `le' for main:Object (NameError)

(linterなので無関係ですが一応)
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

本当に実行できましたか?

paiza.ioに「挙動が同じ」となっている、変数版の方を投げたところ、きちんとエラーになりました。

投稿2018/10/23 06:01

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t.s_k

2018/10/23 06:13 編集

セーブしていないだけした.. ローカル側で再確認したところ、挙動の違いを確認できました (大文字定義だと、入力に対し出力なし) (小文字定義だと、le.index部分でNameError)
guest

0

実行してみましたが、どちらも変数(小文字定義)はエラーとなり、
定数(大文字定義)は実行されました。

実行時に保存されていないとかそういうミスではないでしょうか?

投稿2018/10/23 06:04

dice142

総合スコア5158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問