PR
Profile
Search this site.
MOBILE
qrcode
Others
2018年12月13日のつぶやき
22:29
Ruby:%w(パーセント記法)について https://t.co/LKPAjfVRGU #jugem_blog
| Ruby | 02:21 | - | - | このページのトップへ
Ruby:%w(パーセント記法)について

%wを使用した配列の要素をifで処理する場合についての備忘録。

 

まず、何がしたかったというと「配列の中にある数値をifで特定値以下を判定して出力」という事がしたかった。

その時に、期待した結果が得られなかった。

 

最初に試した方法が以下。

配列の中で、5以下をifで判定して出力。

 

box = %w(1 2 3 4 5 6 7 8 9 10)
box.map do |item|

 if item <= 5

  p item

 end

 

結果 =>

comparison of String with 5 failed (ArgumentError)

エラーとなった。

 

本来なら、

1

2

3

4

5

という結果を求めていた。

 

エラーをgoogle翻訳にかけてみると、「Stringと5の比較が失敗しました(ArgumentError)」とのこと。

つまり、配列の中(String)と比較対象の「5」で、比較できないというお叱りをもらった。

ならば、5をStringにすればいいのかと考え、5 → "5"にしてみる。

 

box = %w(1 2 3 4 5 6 7 8 9 10)
box.map do |item|

 if item <= "5"

  p item

 end

 

結果 =>

"1"

"2"

"3"

"4"

"5"

"10"

 

10が出てきてしまう……なぜ?

(ここで10が判定されている理由は不明……仕組みとしてなぜ判定されるのかという事については知っておくべきだと思うので、いつか調べるが、今追うと時間かかりそうなので今は保留)

classで確認したところ、「String」で出てきたので文字列という事になる。

と、ここにきてようやく……「そもそも配列の中身がなぜStringなんだ?」という事に気づく(気づくのが遅い……)

数値として比較したいのに、String(文字列)クラスとして配列の要素が用意されている事が間違っている。

求める要件で、配列を用意するところから間違っていた。

ならば、配列の要素をInteger(数値)クラスにする必要がある。

 

box = %w(1 2 3 4 5 6 7 8 9 10)
box2 = box.map(&:to_i)
box2.map do |item|

 if item <= 5

  p item

 end

 

結果 =>

1

2

3

4

5

 

求めた結果になった。

文字列として用意した配列の要素を、.map(&:to_i)でIntegerクラスに変換する事で、解決した。

 

そもそも、パーセント記法を使わなければいいのでは? という点については、今回は無視。

(パーセント記法を使ってみたかったというのが使用した理由なのだが、ある意味ここで何故うまくいかない? という事に出会ったのは良かったように思う……とポジティブに考えておく)

 

今回の問題点としては「パーセント記法の仕様を理解せずに使っていた」事になる。

%wで用意した配列の中身は、「文字列」である事を理解せずに使用していた。

配列として用意する事が可能という点のみ知っていた為、ifで数値としての「5」と比較した際に、結果が期待したものになっていなかった。

 

JUGEMテーマ:コンピュータ

| Ruby | 22:01 | - | - | このページのトップへ
un.mode:phone01 ベーシックフォンに期待

株式会社TERRAがクラウドファンディングで支援を募っていたベーシックフォン、un.mode phone01

https://www.un-mode.com

 

スマホ全盛の時代に、ベーシックフォンなんて……という思いもありつつ、かつて携帯電話を使用していたときに、ストレートタイプに憧れつつもずっと折りたたみタイプを使用していた過去が蘇り、またdocomoの高い料金にうんざりしていたので、この機会に料金を低く抑えることに。

 

具体的には、docomoの契約自体は残すが、こちらをシンプルプランに変更して限りなく料金を低く。

スマホでは、新しく格安SIMを契約。

もともと、電話機能自体はほとんど(年5〜6回ぐらい)使用していなかったうえに、自分からかけることもほぼ皆無。

スマホ側はデータ通信専用にしてしまってもいいやと。

 

契約を二つにしても、元の料金から約6,000円ほど料金を低く抑えることに成功!

※un.mode自体は2019年1月に発送が行われる予定なので、それまでは昔使っていた折りたたみタイプの携帯電話を使用して、間をつなぐ。

 

そして、クラウドファンディングだけでなく一般販売も行われるということで、予備のun.modeで予備の2台目が必要になったとしても安心できそう。

2019年1月が楽しみです!

 

JUGEMテーマ:ケータイ

| 雑記 | 18:30 | - | - | このページのトップへ
Ploom TECH:レッド・クーラーの味変わった?

Ploom TECHでは、ほとんどレッド・クーラーを愛用しているのですが、どうにもここ最近味が変わった気がする。

青臭い苦味のような風味が、舌に残るようになったのは、なぜだろう…品質チェックちゃんとやってくれているのでしょうか? JTさん

という、ただの愚痴。

 

JUGEMテーマ:ぼやき

 

| 雑記 | 18:12 | - | - | このページのトップへ
2018年12月12日のつぶやき
22:34
GitHub:詰まった箇所の備忘録 https://t.co/ECf8UCVE9L #jugem_blog
| Ruby | 02:21 | - | - | このページのトップへ