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

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

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

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

Q&A

2回答

549閲覧

Ruby ?の次の文字列にダブルコーテーションはいらないのでしょうか。

ttttaaaak

総合スコア13

Ruby

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

1グッド

1クリップ

投稿2020/02/18 06:20

ruby

1 2s = "foo" 3 begin 4 s[4] = ?b 5 rescue IndexError 6 puts "error" 7 end 8 9実行結果 10error 11 12こちらのコードで?bとは 134番目の文字列はbですか? 14という意味なのでしょうか。
DrqYuto👍を押しています

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

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

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

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

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

guest

回答2

0

?文字の表記は歴史的な遺物と考えたほうがいいです。

Ruby1.8までは、?Aは、"A"という文字の文字コード数値、つまり、"A".ordという意味でした。
a="ABC"の時、a[0]は今のRubyだと"A"という1文字の文字列ですが、Ruby1.8までは"A"という文字の文字コード数値でした。
もし、C言語をご存じなら、Cにおける"A"'A'の違いと同じです。

Ruby1.9で、文字列についての概念が一新されたので、その時に?Aの意味も変更されました。
ということで、Ruby1.9になって以降に新規に書くプログラムではこの記法の出番はないです。

なお、
if s[0] = ?zは、「sの先頭文字を"z"に書き換えて、その書き換えた文字である"z"が真なら」という意味で、s[0]=?z ; if ?z と同じなので、常に真です。おそらくif s[0] == ?zと書きたかったのでは?

投稿2020/02/18 10:18

otn

総合スコア84753

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

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

0

こちらのコードで?bとは

4番目の文字列はbですか?
という意味なのでしょうか。

いえ、違います。?b'b'(1文字を表す文字列)と全く同じです。

(1文字でも削らないといけないコードゴルフの場でもない限り、読みにくくなるだけなので書かないほうがいいです)

投稿2020/02/18 06:24

maisumakun

総合スコア145208

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

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

ttttaaaak

2020/02/18 08:12

難しいですね。。頭が悪いので理解できないです。。 質問を変えさせていただきます。 s = "foo" if s[0] = ?z then puts "true" else puts "false" end このようなコードでtrueになるのと 同じことをおっしゃられてるのでしょうか。 このコードも理解できないです。。。。
maisumakun

2020/02/18 08:16

> このコードも理解できないです。。。。 2行目を「if s[0] = 'z' then」と書くのと全く同じです。こちらに書き換えれば理解できますか?
maisumakun

2020/02/18 08:19

(何かパズルか、重箱の隅をつつくような試験問題か、そのようなものに取り組んでいらっしゃるのでしょうか?)
ttttaaaak

2020/02/18 08:46

falseにするにはどのように書けばよいのでしょうか。 なぜs[0]がzではないのにtrueになるのでしょうか。 webプログラムが全くの初心者で 「たのしいruby」等の書籍を見て 基本文法でわからないところを 取り上げさせていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問