プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で
前スレ
Ruby 初心者スレッド Part 61
https://mevius.5ch.net/test/read.cgi/tech/1503644351/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
探検
Ruby 初心者スレッド Part 62
■ このスレッドは過去ログ倉庫に格納されています
2017/11/24(金) 00:35:29.31ID:rLZHdQ3Q
471デフォルトの名無しさん
2017/12/20(水) 08:45:35.24ID:Za3FAu+s おい無職
自演はやめとけ
自演はやめとけ
472デフォルトの名無しさん
2017/12/20(水) 14:31:38.22ID:Za3FAu+s 毎朝7時8時から書き込める荒らしは何の仕事してるんや?
473デフォルトの名無しさん
2017/12/20(水) 18:57:50.54ID:2lbW5JOk RubyVM::InstructionSequence.compile("class Hoge end").eval
のコードを実行したら直後に
p Hoge.new
って問題無く書けるのか
コンテクストが別々だと勘違いしてた
のコードを実行したら直後に
p Hoge.new
って問題無く書けるのか
コンテクストが別々だと勘違いしてた
474デフォルトの名無しさん
2017/12/20(水) 22:34:07.59ID:4hmeAMNm >>470
リファクタリングを理解してませんと認めたってことでOKだね
リファクタリングを理解してませんと認めたってことでOKだね
475デフォルトの名無しさん
2017/12/20(水) 22:35:24.96ID:4hmeAMNm476デフォルトの名無しさん
2017/12/20(水) 22:48:45.50ID:4hmeAMNm >>466
> 配列の操作そのものが難しいと勘違いしてるんじゃないか?
> 配列の操作に使うコードって大概は下みたいに10行前後で書けるだろ
書けてないだろ?
それ何の処理するコードだよ
[1,2,3].acces([])
=> [1, 2, 3]
[1,2,3].acces([1])
=> 2
[1,2,3].acces([1,2])
NoMethodError: undefined method `acces' for 2:Integer
from (irb):6:in `acces'
from (irb):29
from C:/Ruby24-x64/bin/irb.cmd:19:in `<main>'
お前がそれじゃ、配列は難しいという結論にしかならんぞ
> 配列の操作そのものが難しいと勘違いしてるんじゃないか?
> 配列の操作に使うコードって大概は下みたいに10行前後で書けるだろ
書けてないだろ?
それ何の処理するコードだよ
[1,2,3].acces([])
=> [1, 2, 3]
[1,2,3].acces([1])
=> 2
[1,2,3].acces([1,2])
NoMethodError: undefined method `acces' for 2:Integer
from (irb):6:in `acces'
from (irb):29
from C:/Ruby24-x64/bin/irb.cmd:19:in `<main>'
お前がそれじゃ、配列は難しいという結論にしかならんぞ
477デフォルトの名無しさん
2017/12/20(水) 22:56:44.83ID:4hmeAMNm >>468
> 今のところ、リファクタリングについて誰ひとり説明できてないぞ?
> もっとシンプルに表現できるだろw
ソフトウェアの外部的振る舞いを保ちつつ、理解や修正が簡単になるように、内部構造を改善すること
補足を追加するならば、
振る舞いを保てていればいいので、アルゴリズムを変えてもOK
というか、無駄があったりしてわかりにくいアルゴリズムを
理解や修正が簡単になるように書き換えることもリファクタリングの一つ
何が言いたいかというと、リファクタリングはパースした結果が
一致するように書き換えることではないということ
パースできたからといって、リファクタリングができたことにはならない
> 今のところ、リファクタリングについて誰ひとり説明できてないぞ?
> もっとシンプルに表現できるだろw
ソフトウェアの外部的振る舞いを保ちつつ、理解や修正が簡単になるように、内部構造を改善すること
補足を追加するならば、
振る舞いを保てていればいいので、アルゴリズムを変えてもOK
というか、無駄があったりしてわかりにくいアルゴリズムを
理解や修正が簡単になるように書き換えることもリファクタリングの一つ
何が言いたいかというと、リファクタリングはパースした結果が
一致するように書き換えることではないということ
パースできたからといって、リファクタリングができたことにはならない
478デフォルトの名無しさん
2017/12/20(水) 23:30:14.73ID:nhQOfr/3 2.5まで後5日
479デフォルトの名無しさん
2017/12/21(木) 01:18:36.01ID:l5/5gdQz480デフォルトの名無しさん
2017/12/21(木) 01:42:59.97ID:prpojwIY >>479
いい加減学習しよう
422 自分:デフォルトの名無しさん[sage] 投稿日:2017/12/19(火) 01:06:10.31 ID:si5W7uAD [10/23]
はっきり言わないと理解できないのかな?
俺はアンチスレには行きません
何度言われてもね
いい加減学習しよう
422 自分:デフォルトの名無しさん[sage] 投稿日:2017/12/19(火) 01:06:10.31 ID:si5W7uAD [10/23]
はっきり言わないと理解できないのかな?
俺はアンチスレには行きません
何度言われてもね
481デフォルトの名無しさん
2017/12/21(木) 02:12:25.62ID:IcTBGDe8 自演ばれてんぞ
482デフォルトの名無しさん
2017/12/21(木) 02:49:55.63ID:l5/5gdQz483デフォルトの名無しさん
2017/12/21(木) 03:03:06.96ID:h5j2wgPh 例えば、構造やサイズが変わる多次元配列の要素を辿って行く必要がある場合、
添え字だけ集めて一括指定で辿れる様にするのって普通?
添え字だけ集めて一括指定で辿れる様にするのって普通?
484デフォルトの名無しさん
2017/12/21(木) 11:43:09.31ID:XGDp/jet >>477
はい。正解
はい。正解
485デフォルトの名無しさん
2017/12/21(木) 12:10:12.13ID:ow9tew52486デフォルトの名無しさん
2017/12/21(木) 13:37:15.11ID:K/addjJ3487デフォルトの名無しさん
2017/12/21(木) 14:41:34.48ID:nqxJQXq0 Array#dig
488デフォルトの名無しさん
2017/12/21(木) 18:29:48.77ID:ztrEyuDD 文字列に対して
・0〜9の一桁の数であれば頭に0を付け足す(例:00,01
・10以降はそのまま
という処理を行いたいんですが、正規表現でスパッとかけたりするんでしょうか
イメージとしては
text = "9"なら09
text = "10"なら10
として出力(print)がしたいです
gsubで置換できないか試しているのですがうまいこといかず・・・
アドバイス頂けますと幸いです
・0〜9の一桁の数であれば頭に0を付け足す(例:00,01
・10以降はそのまま
という処理を行いたいんですが、正規表現でスパッとかけたりするんでしょうか
イメージとしては
text = "9"なら09
text = "10"なら10
として出力(print)がしたいです
gsubで置換できないか試しているのですがうまいこといかず・・・
アドバイス頂けますと幸いです
489デフォルトの名無しさん
2017/12/21(木) 18:34:23.75ID:2OtOKx8R 正規表現よりも sprintfフォーマットを使おう
puts "%02d, %02d,%02d,%02d" % [1,5,10, 100]
#=> 01, 05,10,100
puts "%02d, %02d,%02d,%02d" % [1,5,10, 100]
#=> 01, 05,10,100
490デフォルトの名無しさん
2017/12/21(木) 18:34:49.31ID:ZdPTZj/x sprintf "%02d" % 9
sprintf "%02d" % 10
sprintf "%02d" % 10
491デフォルトの名無しさん
2017/12/21(木) 18:51:00.27ID:2OtOKx8R ちなみにあえてgsubでやるなら
'1'.gsub(/^(?=\d$)/, '0') #=> "01"
'42'.gsub(/^(?=\d$)/, '0') #=> "42"
'1'.gsub(/^(?=\d$)/, '0') #=> "01"
'42'.gsub(/^(?=\d$)/, '0') #=> "42"
492デフォルトの名無しさん
2017/12/21(木) 18:51:08.76ID:8yE94KQ4 %w(0 1 5 9 11 99 108 1024 16384).each do |x|
p x.sub(/^([0-9])$/) { "0#$1" } # キャプチャを使った例
# p x.sub(/^(?=[0-9]$)/) { "0" } # 先読みを使った例
# p "%02d" % x.to_i # 整数値に変換して書式文字列を使った例
end
"00"
"01"
"05"
"09"
"11"
"99"
"108"
"1024"
"16384"
p x.sub(/^([0-9])$/) { "0#$1" } # キャプチャを使った例
# p x.sub(/^(?=[0-9]$)/) { "0" } # 先読みを使った例
# p "%02d" % x.to_i # 整数値に変換して書式文字列を使った例
end
"00"
"01"
"05"
"09"
"11"
"99"
"108"
"1024"
"16384"
493デフォルトの名無しさん
2017/12/21(木) 19:24:42.40ID:gRGJJy1x ありがとうございます!sprintf、こういう風に使えるのですか。便利ですね・・・
正規表現での場合も教えていただきありがとうございました
勉強になりましたm(_ _)m
正規表現での場合も教えていただきありがとうございました
勉強になりましたm(_ _)m
494デフォルトの名無しさん
2017/12/21(木) 19:26:00.72ID:gRGJJy1x495デフォルトの名無しさん
2017/12/21(木) 19:32:53.88ID:aIK1VRoC 正規表現は後で泣くからなるべく使わないほうがいい。
もし使うのなら
複雑のは避けて
シンプル+シンプルと組み合わせて使うといい。
もし使うのなら
複雑のは避けて
シンプル+シンプルと組み合わせて使うといい。
496デフォルトの名無しさん
2017/12/21(木) 20:20:34.35ID:prpojwIY497デフォルトの名無しさん
2017/12/21(木) 22:24:14.24ID:OUKJWky+ >>461
>俺はそんなことは言ってないので他人の意見だね
いいや、もろに言ってるよ
君のレスに含まれるRubyという単語を改変してみた:
>動的型付け言語が大変なのはソースコードを読むときだよ。書くときは比較的楽。
>楽の意味がわからないなら、タイプ数が少ないと言い換えても良い
:
>理由はまんまだが型という情報が書いてあるから。
>情報を多く書かなければいけない静的型付け言語は大変で
>でも情報が多く有るから静的型付け言語はわかりやすい
なんら違和感もないだろう?あいも変わらずごく当たり前な一般論を語っているだけ
さあ、Rubyに限定されない「動的型付け言語におけるリファクタリング」を
語りたいのなら、このスレに粘着せず、>>107で紹介した専用スレへ移動しなさい
>俺はそんなことは言ってないので他人の意見だね
いいや、もろに言ってるよ
君のレスに含まれるRubyという単語を改変してみた:
>動的型付け言語が大変なのはソースコードを読むときだよ。書くときは比較的楽。
>楽の意味がわからないなら、タイプ数が少ないと言い換えても良い
:
>理由はまんまだが型という情報が書いてあるから。
>情報を多く書かなければいけない静的型付け言語は大変で
>でも情報が多く有るから静的型付け言語はわかりやすい
なんら違和感もないだろう?あいも変わらずごく当たり前な一般論を語っているだけ
さあ、Rubyに限定されない「動的型付け言語におけるリファクタリング」を
語りたいのなら、このスレに粘着せず、>>107で紹介した専用スレへ移動しなさい
498デフォルトの名無しさん
2017/12/21(木) 22:29:08.65ID:prpojwIY499デフォルトの名無しさん
2017/12/22(金) 10:53:32.70ID:zY/Ujd0Y 496から498までの自演を見てると小学生の演劇見せられてる気分になる
って事で晒しage
って事で晒しage
500デフォルトの名無しさん
2017/12/22(金) 15:56:43.92ID:o0zFMz04501デフォルトの名無しさん
2017/12/22(金) 15:57:53.00ID:o0zFMz04 つか、Ruby関係ないかw
502デフォルトの名無しさん
2017/12/22(金) 16:08:37.20ID:OF22/s+V ruby2.5は何が来るかな
503デフォルトの名無しさん
2017/12/22(金) 17:59:37.34ID:2CqGXpCv これでTypeScriptやPython方式の型ヒンティングが来たらコミュニティが大荒れするだろうな
504デフォルトの名無しさん
2017/12/22(金) 18:04:00.26ID:hLTr5w9I Ruby 2.5.0-rc1 リリース (12月14日)
https://www.ruby-lang.org/ja/news/2017/12/14/ruby-2-5-0-rc1-released/
★ 新機能 ★
* バックトレースおよびエラーメッセージが逆順に出力されるようになった (Railsゴリ押し?)
* トップレベルにおける定数検索の削除
* rescue/else/ensure が do/end ブロック内にも直接書けるようになった
* yield_self の追加
★ パフォーマンスの改善 ★
(略...
★ その他の注目すべき 2.4 からの変更点 ★
* Onigmo 6.1.3 の取り組み (実際は Ruby 2.4.1 にて取り込み済み)
* bundler の取り込み
その他略...
詳細は https://github.com/ruby/ruby/blob/v2_5_0_rc1/NEWS に書かれてる
☆彡 ☆彡 ☆彡 ☆彡 ☆彡
第三者の記事:
* サンプルコードでわかる!Ruby 2.5の主な新機能と変更点 https://qiita.com/jnchito/items/f182b6f0093a6a3701a1
https://www.ruby-lang.org/ja/news/2017/12/14/ruby-2-5-0-rc1-released/
★ 新機能 ★
* バックトレースおよびエラーメッセージが逆順に出力されるようになった (Railsゴリ押し?)
* トップレベルにおける定数検索の削除
* rescue/else/ensure が do/end ブロック内にも直接書けるようになった
* yield_self の追加
★ パフォーマンスの改善 ★
(略...
★ その他の注目すべき 2.4 からの変更点 ★
* Onigmo 6.1.3 の取り組み (実際は Ruby 2.4.1 にて取り込み済み)
* bundler の取り込み
その他略...
詳細は https://github.com/ruby/ruby/blob/v2_5_0_rc1/NEWS に書かれてる
☆彡 ☆彡 ☆彡 ☆彡 ☆彡
第三者の記事:
* サンプルコードでわかる!Ruby 2.5の主な新機能と変更点 https://qiita.com/jnchito/items/f182b6f0093a6a3701a1
505デフォルトの名無しさん
2017/12/22(金) 18:20:37.57ID:bOdX3AhV ね
ん
ま
つ
ん
ま
つ
506デフォルトの名無しさん
2017/12/22(金) 21:24:19.52ID:6yk8gXaG >>500
> 単純に静的言語はコンパイルである程度構文エラーを検出できるから楽を、
> リファクタリングが楽だと思ってるんじゃないかな
違うよ。静的型付け言語の場合が簡単なのは、
ソースコード上に型が書いてあるからだよ
コンパイルエラーは関係ない
例えば
class Klass {
> 単純に静的言語はコンパイルである程度構文エラーを検出できるから楽を、
> リファクタリングが楽だと思ってるんじゃないかな
違うよ。静的型付け言語の場合が簡単なのは、
ソースコード上に型が書いてあるからだよ
コンパイルエラーは関係ない
例えば
class Klass {
507デフォルトの名無しさん
2017/12/22(金) 21:28:48.59ID:6yk8gXaG (間違って途中で送信した)
例えば
class Klass {
function foo() { }
}
みたいなクラスがあって、
fooをbarに書き換える時
↓ このように型が書いてあれば、ここのfooもbarに
書き換えなきゃいけないとわかる
function f(Klass k) {
k.foo();
}
↓ でもこの場合は、書き換えれば良いのかわからない
function f(k) {
k.foo();
}
ソースコード全体から、fを呼び出している所をすべて探して
引数にKlassクラス(もしくはそれを継承したクラス)を
渡していることを確認しなければいけない
例えば
class Klass {
function foo() { }
}
みたいなクラスがあって、
fooをbarに書き換える時
↓ このように型が書いてあれば、ここのfooもbarに
書き換えなきゃいけないとわかる
function f(Klass k) {
k.foo();
}
↓ でもこの場合は、書き換えれば良いのかわからない
function f(k) {
k.foo();
}
ソースコード全体から、fを呼び出している所をすべて探して
引数にKlassクラス(もしくはそれを継承したクラス)を
渡していることを確認しなければいけない
508デフォルトの名無しさん
2017/12/22(金) 21:38:46.01ID:6yk8gXaG 今回は一番簡単な例としてメソッド名の変更を例にしたが
例えば、メソッドの引数の数が変わったときも
型がわかれば、メソッドが特定できるので、変えなければいけない場所がわかる
メソッドが消えたこともわかる
クラス名で検索すれば、そのクラスを使ってるモジュールもわかるしね
シグネチャの変更に関わる部分は、静的型付け言語の場合は
すごく簡単に変更すべき場所を特定できる
例えば、メソッドの引数の数が変わったときも
型がわかれば、メソッドが特定できるので、変えなければいけない場所がわかる
メソッドが消えたこともわかる
クラス名で検索すれば、そのクラスを使ってるモジュールもわかるしね
シグネチャの変更に関わる部分は、静的型付け言語の場合は
すごく簡単に変更すべき場所を特定できる
509デフォルトの名無しさん
2017/12/22(金) 21:40:18.92ID:6yk8gXaG ここにリファクタリングの種類が書いてあるが、大部分は
シグネチャ(クラスやメソッドの名前や引数の変更)を伴うものだよ
https://so-zou.jp/software/tech/programming/tech/refactoring/
シグネチャ(クラスやメソッドの名前や引数の変更)を伴うものだよ
https://so-zou.jp/software/tech/programming/tech/refactoring/
510デフォルトの名無しさん
2017/12/22(金) 21:42:20.33ID:2CqGXpCv Rubyの静的解析の難しさに関して言えば、単にソースに型が書いてないというだけではないんだよなあ
Rubyって、静的なクラス定義というのがそもそも存在しないんだよ
動かしてみて、RubyのVMのメモリ上に結果としてクラスオブジェクトができて、そこではじめてクラスが定義されたことになるの
この式のクラスは何か?とか考える以前に、クラスなんてものは動かしてみるまで無いの
Rubyって、静的なクラス定義というのがそもそも存在しないんだよ
動かしてみて、RubyのVMのメモリ上に結果としてクラスオブジェクトができて、そこではじめてクラスが定義されたことになるの
この式のクラスは何か?とか考える以前に、クラスなんてものは動かしてみるまで無いの
511デフォルトの名無しさん
2017/12/22(金) 21:48:13.59ID:6yk8gXaG そう。それもあるね。
動くか、動いてないかの二択じゃないか?って
思うかもしれないがぜんぜん違う。
動いてない状態というのは一つしかないが、
動いている状態というのは無限に近い数ある
「0」と「0以上」の違いと同じ
動いてないという一つの状態なら、全部を調べることも可能だが、
動いているという無限にある状態は、調べ上げることは不可能
動くか、動いてないかの二択じゃないか?って
思うかもしれないがぜんぜん違う。
動いてない状態というのは一つしかないが、
動いている状態というのは無限に近い数ある
「0」と「0以上」の違いと同じ
動いてないという一つの状態なら、全部を調べることも可能だが、
動いているという無限にある状態は、調べ上げることは不可能
512デフォルトの名無しさん
2017/12/22(金) 22:04:35.06ID:5nY8hqH+513デフォルトの名無しさん
2017/12/22(金) 22:17:37.91ID:6yk8gXaG 「クラスなんてものは動かしてみるまで無い」かもしれないが、
「仕様(やりたいこと)は動かしてみなくてもある」
ソースコードは動かさなくても「そのクラスは○○であること」
(○○にはメソッドが有ることとかはいります)を前提に
書いてあるというのに「動かしてみるまで無い」ことに意味があるのだろうか
「仕様(やりたいこと)は動かしてみなくてもある」
ソースコードは動かさなくても「そのクラスは○○であること」
(○○にはメソッドが有ることとかはいります)を前提に
書いてあるというのに「動かしてみるまで無い」ことに意味があるのだろうか
514デフォルトの名無しさん
2017/12/22(金) 22:21:48.38ID:2CqGXpCv >>513がRailsを触ったことがないのはわかった
515デフォルトの名無しさん
2017/12/22(金) 22:25:46.71ID:6yk8gXaG516デフォルトの名無しさん
2017/12/22(金) 22:27:24.55ID:2CqGXpCv517デフォルトの名無しさん
2017/12/22(金) 22:32:17.34ID:6yk8gXaG >>516
DBのスキーマを実行時に変えたりすることなんてまず無いだろ
実行前にスキーマは決まってる。
ならクラスも実行前に生成することは可能なわけだが?
Railsが実行後に決めているからと言って、実行時に決まることにはならない
スキーマは実行前に決まっているし、今話してるソースコードだって
そのフィールドが存在するという前提のソースコードを書いてるだろ
動的に生成してるその情報は、本当は実行前に決まってるんやで?
DBのスキーマを実行時に変えたりすることなんてまず無いだろ
実行前にスキーマは決まってる。
ならクラスも実行前に生成することは可能なわけだが?
Railsが実行後に決めているからと言って、実行時に決まることにはならない
スキーマは実行前に決まっているし、今話してるソースコードだって
そのフィールドが存在するという前提のソースコードを書いてるだろ
動的に生成してるその情報は、本当は実行前に決まってるんやで?
518516
2017/12/22(金) 22:43:01.67ID:2CqGXpCv 可能かどうかとやるかどうかは別問題だろう
それRuby3の型検査の仕様として提案してみろ、このスレどころではなく罵倒と嘲笑の的だぞ
それRuby3の型検査の仕様として提案してみろ、このスレどころではなく罵倒と嘲笑の的だぞ
519デフォルトの名無しさん
2017/12/22(金) 22:44:49.43ID:6yk8gXaG520デフォルトの名無しさん
2017/12/22(金) 22:49:53.16ID:6yk8gXaG 動的言語といっても本当に動的に決まることはほとんどなく
静的に決まってる情報を元に動的に作ってるだけなんだよな。
だから実行するたびに毎回同じものが作られる。
毎回同じものを作るなら、キャッシュするかのように
最初から作っておけば良いわけさ
静的に決まってる情報を元に動的に作ってるだけなんだよな。
だから実行するたびに毎回同じものが作られる。
毎回同じものを作るなら、キャッシュするかのように
最初から作っておけば良いわけさ
521デフォルトの名無しさん
2017/12/22(金) 22:50:08.15ID:2CqGXpCv >>519
DBスキーマまで考慮したメタプログラミング対応の静的解析ツールを作るってこと?
実用的なものができると本気で思うなら作ればいいんじゃね?
みんな喜ぶし、そんな実績があればそれこそMRIの主要メンバーとしてRuby3の仕様決定を主導できるぞ
頑張れよ
DBスキーマまで考慮したメタプログラミング対応の静的解析ツールを作るってこと?
実用的なものができると本気で思うなら作ればいいんじゃね?
みんな喜ぶし、そんな実績があればそれこそMRIの主要メンバーとしてRuby3の仕様決定を主導できるぞ
頑張れよ
522デフォルトの名無しさん
2017/12/22(金) 23:01:34.92ID:6yk8gXaG >>521
だから動的言語の仕様じゃ無理だって話してるじゃんw
ソースコードにクラスという型を書いてあるから多くのリファクタリングが簡単に出来るようになる
静的に決まってるならソースコードに静的に書けるわけで、
静的に書いておけば、リファクタリングが簡単に早くできるって話をしてる
だから動的言語の仕様じゃ無理だって話してるじゃんw
ソースコードにクラスという型を書いてあるから多くのリファクタリングが簡単に出来るようになる
静的に決まってるならソースコードに静的に書けるわけで、
静的に書いておけば、リファクタリングが簡単に早くできるって話をしてる
523デフォルトの名無しさん
2017/12/22(金) 23:36:34.81ID:5nY8hqH+524デフォルトの名無しさん
2017/12/23(土) 00:24:15.46ID:eRzaIxhX 動的メソッドは?(初心者並感)
525デフォルトの名無しさん
2017/12/23(土) 07:12:36.09ID:SJqo2RLv >>522のその論理はもういいよw
食いたくないのに食わされてお腹いっぱいっすわ
食いたくないのに食わされてお腹いっぱいっすわ
526デフォルトの名無しさん
2017/12/23(土) 07:28:35.18ID:SJqo2RLv527デフォルトの名無しさん
2017/12/23(土) 10:11:10.96ID:f0qvO5Sa528デフォルトの名無しさん
2017/12/23(土) 10:11:40.67ID:f0qvO5Sa >>525
食いたくないなら見るな
食いたくないなら見るな
529デフォルトの名無しさん
2017/12/23(土) 10:13:50.17ID:AknL/7GP このスレはいっつも議論してんなぁ
みんな日中は何してる人なの?
みんな日中は何してる人なの?
530デフォルトの名無しさん
2017/12/23(土) 10:18:01.60ID:f0qvO5Sa 普通に仕事してるよ。
だから平日の日中は書き込めない
だから平日の日中は書き込めない
531デフォルトの名無しさん
2017/12/23(土) 10:58:49.51ID:YmDQ4aAw Rspecで下みたいな書き方ってあり?
それとも避けられる?
# def f n
# n + n
# end
context 'fの引数が0から255のとき' do
??256.times do |i|
????it { expect( f(i) ).to eq (2 * i) }
??end
end
それとも避けられる?
# def f n
# n + n
# end
context 'fの引数が0から255のとき' do
??256.times do |i|
????it { expect( f(i) ).to eq (2 * i) }
??end
end
532デフォルトの名無しさん
2017/12/23(土) 11:05:45.83ID:QLWK33W3533デフォルトの名無しさん
2017/12/23(土) 11:10:32.49ID:YmDQ4aAw >>532
じゃあもし0から255まで全部パスするか書きたいときは
it { expect( f(0) ).to eq (0) }
it { expect( f(1) ).to eq (2) }
...
ってズラっと列挙しろってこと?
じゃあもし0から255まで全部パスするか書きたいときは
it { expect( f(0) ).to eq (0) }
it { expect( f(1) ).to eq (2) }
...
ってズラっと列挙しろってこと?
534デフォルトの名無しさん
2017/12/23(土) 11:14:45.72ID:QLWK33W3 あと、「nの2倍を返す」という観点と「入力は0から255まで」という観点がごっちゃになってるのも良くない
この場合、前者を代表値(5とか)でテストして、それに加えて後者の観点で境界値(0と255)を試すくらいでいいと思うよ
代表値は冗長かもしれないけど前者の観点をわかりやすく表現するという意味では価値はある
この場合、前者を代表値(5とか)でテストして、それに加えて後者の観点で境界値(0と255)を試すくらいでいいと思うよ
代表値は冗長かもしれないけど前者の観点をわかりやすく表現するという意味では価値はある
535デフォルトの名無しさん
2017/12/23(土) 11:18:46.43ID:LnjVX11P プロパティテストにしろよ。
536デフォルトの名無しさん
2017/12/23(土) 11:58:54.91ID:YmDQ4aAw537デフォルトの名無しさん
2017/12/23(土) 15:22:55.73ID:f0qvO5Sa テステス
538デフォルトの名無しさん
2017/12/23(土) 15:29:55.01ID:UWK7YGb5 荒らしがハッスるしとる
やっぱアンチも人のいないアンチスレより人の多い本スレに来てしゃべりたいのか
かわいそう
やっぱアンチも人のいないアンチスレより人の多い本スレに来てしゃべりたいのか
かわいそう
539デフォルトの名無しさん
2017/12/23(土) 15:32:00.40ID:f0qvO5Sa あ、いや、いままでとちょっと違うことを書き込もうと思ったけど
ID変わってたかなーって思っただけ
変わってなかったので違う話はしないよw
あと他のスレには行かないと何度もいってる
あきらメロン
ID変わってたかなーって思っただけ
変わってなかったので違う話はしないよw
あと他のスレには行かないと何度もいってる
あきらメロン
540デフォルトの名無しさん
2017/12/24(日) 09:48:03.56ID:24EH1p52 https://rubyinstaller.org/downloads/
Windows10 に、Ruby を入れようと、
上のページの、7-Zip Archives から、Ruby 2.4(x64)をダウンロードすると、
rubyinstaller-2.4.3-1-x64.7z というファイル名だった。
これを、7-Zip で解凍すると、56MB になった
C:\Ruby24-x64\
とフォルダ名を変えたけど、ここからどうやってインストールするの?
それとも、これはインストーラーではないのかな?
Windows10 に、Ruby を入れようと、
上のページの、7-Zip Archives から、Ruby 2.4(x64)をダウンロードすると、
rubyinstaller-2.4.3-1-x64.7z というファイル名だった。
これを、7-Zip で解凍すると、56MB になった
C:\Ruby24-x64\
とフォルダ名を変えたけど、ここからどうやってインストールするの?
それとも、これはインストーラーではないのかな?
541デフォルトの名無しさん
2017/12/24(日) 10:02:29.66ID:naA/wMe4 環境を書いてから
何したいかを言え
何したいかを言え
542デフォルトの名無しさん
2017/12/24(日) 10:08:38.24ID:imZP4RC3 なんで素直にexe落とさないの?
543540
2017/12/24(日) 10:48:40.19ID:24EH1p52 圧縮された書庫だから、7-Zip Archives から、Ruby 2.4(x64)をダウンロードしたけど、
これはインストーラーとは違うものなのか?
rubyinstaller-2.4.3-1-x64.7z というファイル名だったけど
7-Zip Archives の上にある、RubyInstallers から、Ruby 2.4(x64)をダウンロードしてみるわ
これはインストーラーとは違うものなのか?
rubyinstaller-2.4.3-1-x64.7z というファイル名だったけど
7-Zip Archives の上にある、RubyInstallers から、Ruby 2.4(x64)をダウンロードしてみるわ
544540
2017/12/24(日) 11:01:29.86ID:24EH1p52 PowerShell で、7-Zip Archives 中の、\bin\ridk.ps1 version を実行してみた
PS C:\Ruby24-x64\bin> .\ridk.ps1 version
---
ruby:
path: C:/Ruby24-x64
version: 2.4.3
platform: x64-mingw32
ruby_installer:
package_version: 2.4.3-1
git_commit: 36aac73
os: Microsoft Windows [Version 10.0.16299.125]
やっぱり、これも、RubyInstaller なのかな?
よくわからない
PS C:\Ruby24-x64\bin> .\ridk.ps1 version
---
ruby:
path: C:/Ruby24-x64
version: 2.4.3
platform: x64-mingw32
ruby_installer:
package_version: 2.4.3-1
git_commit: 36aac73
os: Microsoft Windows [Version 10.0.16299.125]
やっぱり、これも、RubyInstaller なのかな?
よくわからない
545デフォルトの名無しさん
2017/12/24(日) 11:02:00.42ID:A3ERayLu Rubyにパイプラインオペレータってないの?
JavaScriptだと
exclaim(capitalize(doubleSay("hello")));
というカッコの入れ子が
"hello" |> doubleSay |> capitalize |> exclaim;
とシェルスクリプトのパイプのように
流れるような形で記述できるようになるらしいんだけど
JavaScriptだと
exclaim(capitalize(doubleSay("hello")));
というカッコの入れ子が
"hello" |> doubleSay |> capitalize |> exclaim;
とシェルスクリプトのパイプのように
流れるような形で記述できるようになるらしいんだけど
546デフォルトの名無しさん
2017/12/24(日) 11:05:46.33ID:mMj7aGtc547540
2017/12/24(日) 11:08:13.75ID:24EH1p52 7-Zip Archives からダウンロードした、Ruby 2.4(x64)は、
ひょっとして、CUI 版のインストーラーなのかな?
(rubyinstaller-2.4.3-1-x64.7z というファイル名だった)
7-Zip Archives 中の、\bin\ridk.ps1 に引数を付けて、
インストールするのかも知れない
よくわからないけど。
インストーラーじゃないかも知れないし
ひょっとして、CUI 版のインストーラーなのかな?
(rubyinstaller-2.4.3-1-x64.7z というファイル名だった)
7-Zip Archives 中の、\bin\ridk.ps1 に引数を付けて、
インストールするのかも知れない
よくわからないけど。
インストーラーじゃないかも知れないし
548デフォルトの名無しさん
2017/12/24(日) 11:08:41.37ID:2eVeUlKQ549デフォルトの名無しさん
2017/12/24(日) 11:14:59.06ID:24EH1p52550540
2017/12/24(日) 11:29:56.75ID:24EH1p52 7-Zip Archives から、Ruby 2.4(x64)をダウンロードすると、
rubyinstaller-2.4.3-1-x64.7z というファイル名だった。
これを、7-Zip で解凍すると、56MB になった
56MB もあるし、\bin の中には、ruby.exe, rubyw.exe もある。
実行環境が揃っているような気もする
実はポータブル版で、環境変数PATH を通せば、実行できるのかも知れない
よくわからないけど、何か捨てがたいw
rubyinstaller-2.4.3-1-x64.7z というファイル名だった。
これを、7-Zip で解凍すると、56MB になった
56MB もあるし、\bin の中には、ruby.exe, rubyw.exe もある。
実行環境が揃っているような気もする
実はポータブル版で、環境変数PATH を通せば、実行できるのかも知れない
よくわからないけど、何か捨てがたいw
551540
2017/12/24(日) 11:37:26.57ID:24EH1p52 PowerShell で、7-Zip Archives 中の、\bin\ruby.exe -v を実行してみた
PS C:\Ruby24-x64\bin> .\ruby.exe -v
ruby 2.4.3p205 (2017-12-14 revision 61247) [x64-mingw32]
やっぱり、7-Zip Archives の中にあるやつは、ポータブル版じゃないのか?
ひょっとして、実行もできるかも?
PS C:\Ruby24-x64\bin> .\ruby.exe -v
ruby 2.4.3p205 (2017-12-14 revision 61247) [x64-mingw32]
やっぱり、7-Zip Archives の中にあるやつは、ポータブル版じゃないのか?
ひょっとして、実行もできるかも?
552デフォルトの名無しさん
2017/12/24(日) 12:51:21.82ID:W/aeQ+z1 実行できて当たり前なのに何を言っているのか
インストーラーはパスを通したりするだけだぞ
インストーラーはパスを通したりするだけだぞ
553540
2017/12/24(日) 13:37:01.71ID:24EH1p52 7-Zip Archives からダウンロードした、Ruby 2.4(x64)は、
環境変数PATH が通っていないだけで、実行できるの?
ここに、実行環境が一式が揃っているの?
つまり、どこにでも移動できるポータブル版?
環境変数PATH が通っていないだけで、実行できるの?
ここに、実行環境が一式が揃っているの?
つまり、どこにでも移動できるポータブル版?
554デフォルトの名無しさん
2017/12/24(日) 13:55:33.60ID:A3ERayLu555デフォルトの名無しさん
2017/12/24(日) 13:58:58.91ID:A3ERayLu556デフォルトの名無しさん
2017/12/24(日) 14:12:36.12ID:BNj/0IJ2 >>555
Rubyに文句を言う前にまずはRubyの仕様くらいちゃんと理解しよう
+は全く特別なところのないごく普通のインスタンスメソッド呼び出しだぞ
関数型でaddにパイプライン使うとしたら
b |> add(a) # add(a, b)に相当
こうなるわけだが、理解してるか?
Rubyに文句を言う前にまずはRubyの仕様くらいちゃんと理解しよう
+は全く特別なところのないごく普通のインスタンスメソッド呼び出しだぞ
関数型でaddにパイプライン使うとしたら
b |> add(a) # add(a, b)に相当
こうなるわけだが、理解してるか?
557デフォルトの名無しさん
2017/12/24(日) 14:15:02.58ID:A3ERayLu >>556
まあ君はJavaScriptの仕様を知らなくて当然だろうけどね
|> オペレータっていうのは、引数を一つの関数呼び出しの
シンタックスシュガーに過ぎない
だから関数呼び出しを行ってるのと一緒
関数呼び出しをするとオブジェクト指向にならないのか?
そんなわけあるかw
まあ君はJavaScriptの仕様を知らなくて当然だろうけどね
|> オペレータっていうのは、引数を一つの関数呼び出しの
シンタックスシュガーに過ぎない
だから関数呼び出しを行ってるのと一緒
関数呼び出しをするとオブジェクト指向にならないのか?
そんなわけあるかw
558デフォルトの名無しさん
2017/12/24(日) 14:29:26.20ID:BNj/0IJ2 >>557
ある機能が言語に追加されることでコーディングのスタイルが大きく変わってしまうことはよくある。
まあそういう経験則的な話は君には通じなそうだから、もっと具体的にRubyとの相性の悪さを説明してあげよう。
まず、関数型言語やJavaScriptでは裸の関数名は第一級関数(関数オブジェクト)だが、Rubyではメソッド呼び出しになってしまう。
だから>>548のようにシンボルを使った汚いハックをするか、|>の後にくる識別子は第一級関数として扱うという特別ルールを設けることになる。
特別ルールを設けたとしても、>>556のaddの例みたいな使い方には対応できない。
君は関数型言語を知らないみたいだから説明しとくと、add(a)はadd関数の第一引数にaを部分適用(カリー化)した引数一個の関数を返す。
|>の直後には必ず関数名が来るというルールだと、これは実現できないのはわかるよね。
ある機能が言語に追加されることでコーディングのスタイルが大きく変わってしまうことはよくある。
まあそういう経験則的な話は君には通じなそうだから、もっと具体的にRubyとの相性の悪さを説明してあげよう。
まず、関数型言語やJavaScriptでは裸の関数名は第一級関数(関数オブジェクト)だが、Rubyではメソッド呼び出しになってしまう。
だから>>548のようにシンボルを使った汚いハックをするか、|>の後にくる識別子は第一級関数として扱うという特別ルールを設けることになる。
特別ルールを設けたとしても、>>556のaddの例みたいな使い方には対応できない。
君は関数型言語を知らないみたいだから説明しとくと、add(a)はadd関数の第一引数にaを部分適用(カリー化)した引数一個の関数を返す。
|>の直後には必ず関数名が来るというルールだと、これは実現できないのはわかるよね。
559558
2017/12/24(日) 14:33:34.04ID:BNj/0IJ2 それと、Rubyの関数は殆どがインスタンスメソッドであるというのも忘れてはいけない。
x |> y.hoge
これは y.hoge(x) と解釈すべきだろうか?
それともy.hoge()(x)かな?
今のRubyの仕様からすると後者が自然だと思わない?
x |> y.hoge
これは y.hoge(x) と解釈すべきだろうか?
それともy.hoge()(x)かな?
今のRubyの仕様からすると後者が自然だと思わない?
560デフォルトの名無しさん
2017/12/24(日) 14:46:41.85ID:bBhW4Y9m ようお前ら。
Ruby 2.5が来るのは明日だぞ。
gem作ってる奴はちゃんと準備出来てるか?
Ruby2.5にした途端に泣きを見ることのないようにしとけよ。
Ruby 2.5が来るのは明日だぞ。
gem作ってる奴はちゃんと準備出来てるか?
Ruby2.5にした途端に泣きを見ることのないようにしとけよ。
561デフォルトの名無しさん
2017/12/24(日) 15:29:04.65ID:A3ERayLu >>558
あ、なるほどw シンタックスシュガーって言ってるのに、
あんたは関数型の仕様に変更すると思い込んでるわけかw
俺、Rubyを関数型にしろなんて一言も言ってないよ?
JavaScriptが関数型になったなんて一言も言ってないよ?
ただ、関数呼び出しのネストは見づらいから、一つの引数を取る関数の呼び出しを
|> でつなげた "書き方" ができると良いねって話しかしてないんだよ
> 今のRubyの仕様からすると後者が自然だと思わない?
理由が書いてないから判断不可能だね
>>556
> 関数型でaddにパイプライン使うとしたら
> b |> add(a) # add(a, b)に相当
> こうなるわけだが、理解してるか?
ぷぷw |> という記号を使っだけで、関数型になるべきだなんて
思い込んでるからそういう結論になる。馬鹿だねぇ
JavaScriptの関数型でない単なるパイプラインオペレータは引数が1つの
関数を受け取ることしかできない。 カリー化?そんなものはしない。
関数型のパイプラインオペレータを導入なんて話はしてないんだから当然の結論
引数が複数の関数を使いたければ、アロー関数でそうなるように書くだけの話
https://github.com/tc39/proposal-pipeline-operator
let newScore = person.score |> double |> (_ => add(7, _)) # アンダースコアは只の変数、iでもaでも良い
papp proposalのpappメソッドを使うとこう書くこともできるようだけど
let newScore = person.score |> double |> add.papp(7)
あ、なるほどw シンタックスシュガーって言ってるのに、
あんたは関数型の仕様に変更すると思い込んでるわけかw
俺、Rubyを関数型にしろなんて一言も言ってないよ?
JavaScriptが関数型になったなんて一言も言ってないよ?
ただ、関数呼び出しのネストは見づらいから、一つの引数を取る関数の呼び出しを
|> でつなげた "書き方" ができると良いねって話しかしてないんだよ
> 今のRubyの仕様からすると後者が自然だと思わない?
理由が書いてないから判断不可能だね
>>556
> 関数型でaddにパイプライン使うとしたら
> b |> add(a) # add(a, b)に相当
> こうなるわけだが、理解してるか?
ぷぷw |> という記号を使っだけで、関数型になるべきだなんて
思い込んでるからそういう結論になる。馬鹿だねぇ
JavaScriptの関数型でない単なるパイプラインオペレータは引数が1つの
関数を受け取ることしかできない。 カリー化?そんなものはしない。
関数型のパイプラインオペレータを導入なんて話はしてないんだから当然の結論
引数が複数の関数を使いたければ、アロー関数でそうなるように書くだけの話
https://github.com/tc39/proposal-pipeline-operator
let newScore = person.score |> double |> (_ => add(7, _)) # アンダースコアは只の変数、iでもaでも良い
papp proposalのpappメソッドを使うとこう書くこともできるようだけど
let newScore = person.score |> double |> add.papp(7)
562デフォルトの名無しさん
2017/12/24(日) 15:52:11.56ID:2eVeUlKQ563デフォルトの名無しさん
2017/12/24(日) 15:54:48.61ID:/VeWYwOF Juliaおぬぬめ
564デフォルトの名無しさん
2017/12/24(日) 16:00:56.08ID:2eVeUlKQ Juliaいいね。これから大注目の言語だよ
ただ、現状は起動が激重なのでJuliacとかが公式採用されないとつらいかも
そういう意味ではJavaに似てるのかも(言語仕様という意味ではなく)
ただ、現状は起動が激重なのでJuliacとかが公式採用されないとつらいかも
そういう意味ではJavaに似てるのかも(言語仕様という意味ではなく)
565デフォルトの名無しさん
2017/12/24(日) 16:12:39.10ID:BNj/0IJ2 Juliaはクソ重い計算やデータの処理を長時間ぶっ通しで動かすための言語だよ
Rubyと比べるようなもんではないし、起動時間が問題になるようなものに使うのも間違い
Rubyと比べるようなもんではないし、起動時間が問題になるようなものに使うのも間違い
566デフォルトの名無しさん
2017/12/24(日) 20:04:37.70ID:4g6ysjQ5 >>545
>流れるような形で記述できるようになるらしいんだけど
できるようになるといふのは、以下の提案かな?
・ESNext Proposal: The Pipeline Operator
https://github.com/tc39/proposal-pipeline-operator
調べてみると、これはあくまで提案(proposal)であって、
5段階あるECMAScript(= JavaScript)仕様策定過程の2番目に過ぎない
0. Strawman
1. Proposal <― パイプライン演算子の状態
2. Draft
3. Candidate
4. Finished
当然、現時点でその実装は存在しておらず「絵に描いた餅」に過ぎない
言い換えると、「こんなのできたらいいなあ」といふ話だよね?
>流れるような形で記述できるようになるらしいんだけど
できるようになるといふのは、以下の提案かな?
・ESNext Proposal: The Pipeline Operator
https://github.com/tc39/proposal-pipeline-operator
調べてみると、これはあくまで提案(proposal)であって、
5段階あるECMAScript(= JavaScript)仕様策定過程の2番目に過ぎない
0. Strawman
1. Proposal <― パイプライン演算子の状態
2. Draft
3. Candidate
4. Finished
当然、現時点でその実装は存在しておらず「絵に描いた餅」に過ぎない
言い換えると、「こんなのできたらいいなあ」といふ話だよね?
567デフォルトの名無しさん
2017/12/24(日) 20:35:54.14ID:4g6ysjQ5 >>561
>関数型のパイプラインオペレータを導入なんて話はしてないんだから当然の結論
え、こう書けないっていうの?
let newScore = person.score |> double |> add(7)
もし pipeline proposal が Finished(採用決定)になったとしても、このコードを
let newScore = person.score |> double |> (_ => add(7, _))
こうも冗長に書かなけりゃならないなんて、ダサイというか中途半端な提案だと思う
>>554の言葉を借りると:
期待したけど、やっぱりJavaScriptの文法からは抜け出せないか
新しい提案と言っても所詮JavaScriptの言語であることに変わりはないしな
っていう感想です
しかも更にpapp proposal(部分適用サポートの提案)がFinishedになったと仮定してもなお
let newScore = person.score |> double |> add.papp(7)
こうなっちゃうなんて、もう少し練り直してから提案した方がいいと思うんだけどなぁ
>関数型のパイプラインオペレータを導入なんて話はしてないんだから当然の結論
え、こう書けないっていうの?
let newScore = person.score |> double |> add(7)
もし pipeline proposal が Finished(採用決定)になったとしても、このコードを
let newScore = person.score |> double |> (_ => add(7, _))
こうも冗長に書かなけりゃならないなんて、ダサイというか中途半端な提案だと思う
>>554の言葉を借りると:
期待したけど、やっぱりJavaScriptの文法からは抜け出せないか
新しい提案と言っても所詮JavaScriptの言語であることに変わりはないしな
っていう感想です
しかも更にpapp proposal(部分適用サポートの提案)がFinishedになったと仮定してもなお
let newScore = person.score |> double |> add.papp(7)
こうなっちゃうなんて、もう少し練り直してから提案した方がいいと思うんだけどなぁ
568540
2017/12/24(日) 22:02:54.10ID:24EH1p52 JS は、Ruby, Elixir の影響が強い。
Kotlin も、Groovy, Ruby の影響が強い
誰か、
>>540
の、7-Zip Archives の所からダウンロードした、
Ruby 2.4(x64)をどうすればよいのか、教えてほしい
Kotlin も、Groovy, Ruby の影響が強い
誰か、
>>540
の、7-Zip Archives の所からダウンロードした、
Ruby 2.4(x64)をどうすればよいのか、教えてほしい
569デフォルトの名無しさん
2017/12/24(日) 22:25:11.95ID:ZqTzsWSR >>568
パスを通せ
パスを通せ
570デフォルトの名無しさん
2017/12/24(日) 23:05:16.75ID:A3ERayLu >>567
> え、こう書けないっていうの?
少しは頭を働かせようよw
そこにある、add(7) が引数を一つ取る関数を返すなら書けるよ
それを汎用化したのがpapp。それにJavaScriptでカリー化する方法だってある
JavaScriptは関数型言語じゃないんだから、関数型言語の方からみて
ダサいとか言うなよw お前、関数型に洗脳されてるだろw
関数型を取り入れたなんて話はしてない。お前が言い出しただけ。
単にパイプラインオペレータという関数のネストを見やすくする機能を
追加するってだけの話
> え、こう書けないっていうの?
少しは頭を働かせようよw
そこにある、add(7) が引数を一つ取る関数を返すなら書けるよ
それを汎用化したのがpapp。それにJavaScriptでカリー化する方法だってある
JavaScriptは関数型言語じゃないんだから、関数型言語の方からみて
ダサいとか言うなよw お前、関数型に洗脳されてるだろw
関数型を取り入れたなんて話はしてない。お前が言い出しただけ。
単にパイプラインオペレータという関数のネストを見やすくする機能を
追加するってだけの話
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 [ぐれ★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★3 [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【朗報】日銀植田総裁「高市さんからの要望は特になかった」 [519511584]
- 中国高官と話す外務省局長の表情、やばい ★2 [175344491]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 高市早苗政権「経済的威圧をしてくる国はリスク」 トランプぴょんぴょん政権さん…… [175344491]
