[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 08/13 18:23 / Filesize : 307 KB / Number-of Response : 1052
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 66



1 名前:デフォルトの名無しさん [2020/01/04(土) 01:15:34.30 ID:X7t3Qsuc0.net]
プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ

質問するときは、OSやRubyのバージョン、エラーメッセージを書いて下さい。
Ruby on Rails については、WEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 65
https://mevius.5ch.net/test/read.cgi/tech/1545421414/

るりまサーチ (リファレンス検索)
rurema.clear-code.com/

Rubyist Magazine - るびま
jp.rubyist.net/magazine/

逆引きRuby
www.namaraii.com/rubytips/

Ruby コミュニティ公式
https://www.ruby-lang.org/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

802 名前:1 ID:theiHz1p0.net mailto: >>766
paiza.jp は比較的、新しいバージョンだったと思う

puts RUBY_VERSION
と入力してみ
[]
[ここ壊れてます]

803 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 21:03:03.13 ID:BMjHKKQ5r.net]
>>766
そもそものopalのサイト使えば?
https://opalrb.com/try/

>>767
標準出力に出力すれば?

804 名前:765 [2020/10/01(木) 22:25:46.66 ID:theiHz1p0.net]
JSON ファイルをcat しても、変換されませんでした!

普通の英数字と、\u6708 みたいな文字が混じっているファイルです

805 名前:デフォルトの名無しさん [2020/10/02(金) 09:07:20.78 ID:ugOoTtJuM.net]
matlabでのfiltfilt()のように、ゼロ位相デジタルフィルター処理ができる関数はなんでしょうか

806 名前:デフォルトの名無しさん [2020/10/02(金) 11:29:50.32 ID:36KHjBX6M.net]
すみませんでした

807 名前:765 [2020/10/03(土) 07:39:23.69 ID:/wA+nWqo0.net]
c@at input.json | pe@rl -@Xpne 's/\\u([0-9a-fA-F]{4})/c@hr(h@ex($1))/eg'
(投稿できないので、@を入れました)
で、日本語で表示されました!

これを、Ruby では、どう書きますか?
正規表現で、\u6708 みたいな文字を、どう変換するの?

808 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 09:17:06.76 ID:DiO6Np8S0.net]
Rubyだと、正規表現にマッチした部分を引数にして関数に渡してくれる
メソッドが有る筈だから、それを使えば出来るはず。

809 名前:デフォルトの名無しさん [2020/10/03(土) 09:27:06.27 ID:F7oAx4CC0.net]
-Ks -Ke -Ku があるから -Kw もあるはずだろう(驚き最小)

810 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 09:32:00.87 ID:DiO6Np8S0.net]
>>773
以下のようにすれば、\uXXXX の部分を unicode コードとして文字に直した後のテキストが
標準出力に出力されるのではないかと思われる。
なお、試して無いので実際に動くかどうかは分からない。
$1.to_i(16)は、$1 に入っている文字列を 16進数とみなして整数値に直しているつもり。
x.chr は、数値 x を文字コードとして対応する文字に直しているつもり。
gsub は、正規表現に合致した部分を後続のブロックの中の $1 に入れて、結果に
置換しているつもり。

[test.rb]

strJson = JSONを読み込んだ文字列;

print( strJson.gsub( /\\u([0-9a-fA-F]{4})/ ) { $1.to_i(16).chr } );



811 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 09:45:21.01 ID:MOu6VxbMr.net]
そういうことならJSON.load使えば?

require 'json'
JSON.load(fname)

愚直にやるならArray#packを使いましょう。

str.gsub(/\\u(\h{4})/){[$1].pack('H*').unpack('n*').pack('U*')}

812 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 10:47:42.33 ID:DiO6Np8S0.net]
>>776
間違いがあった。正しくは、
print( strJson.gsub( /\\u([0-9a-fA-F]{4})/ ) { $1.to_i(16).chr("UTF-8") } );

813 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 10:58:07.83 ID:DiO6Np8S0.net]
"UTF-8"ではなくて、"UTF16-BE"か、"UTF16-LE"かも知れない。
試して上手く行くのを選んで欲しい。

814 名前:765 mailto:sage [2020/10/03(土) 11:41:59.34 ID:/wA+nWqo0.net]
>>777
>>778
でも、正常に動きました。ありがとう。
JSON.load で、自動的に読めるようになるのが便利

require 'json'

json = File.read( "input.json" )
p JSON.load( json )

p json.gsub(/\\u(\h{4})/){[$1].pack('H*').unpack('n*').pack('U*')}

print( json.gsub( /\\u([0-9a-fA-F]{4})/ ) { $1.to_i(16).chr("UTF-8") } );

815 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 12:38:03.63 ID:1IyBCfpu0.net]
👨‍👩‍👧‍👦1コードポイント1文字とは限らないし¥uの後は4桁とは限らないよね👨

816 名前:765 mailto:sage [2020/10/03(土) 13:09:59.31 ID:/wA+nWqo0.net]
それなら、単純な正規表現では、ダメ。
実際に存在する、コードポイントを調べないといけない

ひょっとしたら、JSON.load は、それに対応しているかも

817 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 15:56:43.31 ID:P8Zgc9xR0.net]
>>782
全ての文字を utf16 に変換してから、utf8に再変換すればいい気がする。


818 名前:一段階の変換で、ついでに \uXXXX の部分を 単純に 16BIT 整数に直せばいいはず。 []
[ここ壊れてます]

819 名前:765 [2020/10/05(月) 01:16:19.79 ID:z7kgQPv30.net]
\u は、4・8桁の2種類あるのか?

820 名前:765 mailto:sage [2020/10/05(月) 08:08:05.24 ID:z7kgQPv30.net]
👨‍👩‍👧‍👦 は、4つの文字が連結したような感じ

\uD83D\uDC68\u200D
\uD83D\uDC69\u200D
\uD83D\uDC67\u200D
\uD83D\uDC66

\U0001F468\U0000200D
\U0001F469\U0000200D
\U0001F467\U0000200D
\U0001F466

\u{1F468}\u{200D}
\u{1F469}\u{200D}
\u{1F467}\u{200D}
\u{1F466}



821 名前:デフォルトの名無しさん [2020/10/05(月) 10:14:21.95 ID:H6rSrLtq0.net]
もう ruby 関係無いだろ
良い加減消えろ

推奨スレ
mevius.5ch.net/test/read.cgi/tech/1545032904/
mevius.5ch.net/test/read.cgi/tech/1593777227/

822 名前:デフォルトの名無しさん [2020/10/11(日) 00:59:43.22 ID:B+MSoWxK0.net]
( line, ary ), line_num
この( ) をなくすと、エラーになる

TEXT = <<'EOT'
a
b
EOT

line_numbers = TEXT.each_line.with_object( [ ] ).with_index( 1 ) do | ( line, ary ), line_num | # 各行・蓄積変数・行番号
ary.push( line_num )
puts "#{ line_num } : #{ line }"
end

p line_numbers

出力
1 : a
2 : b
[1, 2]

823 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 18:44:20.92 ID:vt3DXswMr.net]
>>787
仕様通りです

824 名前:デフォルトの名無しさん [2020/10/13(火) 15:52:15.31 ID:Iy+8ZYjV0.net]
初心者です
Windows10でrubyのバージョンは2.4です
gets.chompで日本語の文字列を入力しprintで出力したら文字化けするのですがどうしたら治りますか?

825 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 16:24:17.23 ID:y5Oy6HcC0.net]
漏れは、WSL, Ubuntu 18.04 を使っているけど、
Ruby Installer のMSYS 2 かい?

日本語入力が難しい

ファイルか、端末の文字コードの設定だろう。
BOM 無しUTF-8(UTF-8N)

ユーザー環境変数に、RUBYOPT を作って、--encoding=UTF-8 を設定するとか。
ただし、irb が、コマンドプロンプトでは使えなくなるので、
PowerShell しか使えなくなる

VSCode の拡張機能、Code Runner で、
選択したコード片、またはファイル全体を実行できる

これで、irbは使わなくてもよいけど、デバッグで、pry が使えなくなるかも。
pry は、irbを使っているのかも?

826 名前:788 mailto:sage [2020/10/13(火) 16:34:59.69 ID:y5Oy6HcC0.net]
2020-10-06
RubyInstaller 2.7.2-1, 2.6.6-2 and 2.5.8-2 released

Windows では最新版を避けて、2.6.6-2 を使えば?

漏れは、Windows 10, WSL, Ubuntu 18.04 で、
VSCode の拡張機能、Remote WSL も使う

Linux側には、日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使って、
ruby 2.6.6, node 12.16.2 を入れた

yarn は、Windows側に入れて、WSL から、拡張子なしのyarn コマンドを呼べる。
これは、#!/bin/sh で始まるシェルスクリプト

anyenv は多言語向きで、rbenv, nodenv, pyenv, phpenv などを同じ使い方で、統一的に扱える

827 名前:788 mailto:sage [2020/10/13(火) 16:44:54.23 ID:y5Oy6HcC0.net]
Windows 版Ruby の日本語入力では、

コマンドプロンプトよりも、
PowerShell を使う方が良いのかも?

日本語出力は問題ない。
もし、フォントがかすれて表示されたら、バグっているけど

828 名前:788 mailto:sage [2020/10/13(火) 16:56:07.22 ID:y5Oy6HcC0.net]
>>790
修正

>ユーザー環境変数に、RUBYOPT を作って、--encoding=UTF-8 を設定するとか。
>ただし、irb が、コマンドプロンプトでは使えなくなるので、
>PowerShell しか使えなくなる

RUBYOPT に、--encoding=UTF-8 を設定すると、
コマンドプロンプト・PowerShell の両方で、irbが起動しなくなる

C:/Ruby25-x64/lib/ruby/site_ruby/rbreadline.rb:6135:in `delete': invalid byte sequence in UTF-8

コマンドプロンプト・PowerShell の文字コードの設定で、使えるようになるのかな?
漏れは、VSCode, Code Runner を使っているから、irbを使ってい

829 名前:ネい []
[ここ壊れてます]

830 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 17:01:18.58 ID:v339nyYs0.net]
>>789
ridk use で切り替えられるから最新版を試すと良い
このへんの問題も改善されてたはず



831 名前:788 mailto:sage [2020/10/13(火) 17:05:42.76 ID:y5Oy6HcC0.net]
RUBYOPT に、--encoding=UTF-8 を設定すると、

コマンドプロンプト・PowerShell の文字コードの設定で、
chcp 65001
と入力したが、どちらもエラーで、irbが起動しない

でも、irbを使わなければ、
RUBYOPT に設定するのは、便利なんだけど

832 名前:788 mailto:sage [2020/10/13(火) 17:09:23.25 ID:y5Oy6HcC0.net]
>>794
ほう

833 名前:デフォルトの名無しさん [2020/10/13(火) 17:24:55.62 ID:Iy+8ZYjV0.net]
みんなありがとうございます
環境変数って編集したら再起動しないといけないとかありますか?

834 名前:788 mailto:sage [2020/10/13(火) 17:43:39.31 ID:y5Oy6HcC0.net]
OS の再起動は、いらないと思う。
Ruby の再起動だけで良いと思う

PowerShell で、以下を入力して、正しく設定されたか、確認してみ
ls env:

835 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 19:42:36.62 ID:MMOmBqSMr.net]
pryがirb使ってるわけないじゃん。(「irb使う」ってのもよくわからんが)
readlineのライブラリがマルチバイト未対応なだけだから
日本語扱うならnoreadlineで起動すればいいよ。

836 名前:788 mailto:sage [2020/10/14(水) 05:06:57.79 ID:z5Uy/Vd30.net]
pry, rails console を起動すると、irb が起動されるのかな? と思っていた。
画面が似てるでしょ?

例えば、Windows 10, WSL, Ubuntu 18.04 を起動すると、
コマンドプロンプトと同じ画面が起動される

そういうのと同じなのかな? と思って

837 名前:デフォルトの名無しさん [2020/10/14(水) 08:31:15.20 ID:kgj1R+5V0.net]
RUBYPORT変えてやってみたけどだめでした.
コマンドプロンプトとPowerShellは両方文字化けします.
bash on Windowsだと問題なく動きます. 学校で配布された教材がコマンドプロンプトしか使っておらず, 与えられたサンプルプログラムはバージョン2.4以下じゃないと動かないらしいです. 留年しそう.

838 名前:788 mailto:sage [2020/10/14(水) 09:58:02.17 ID:z5Uy/Vd30.net]
>RUBYPORT
RUBYOPT だよ。
ユーザー環境変数に、RUBYOPT に、--encoding=UTF-8 を設定する

PowerShell で、以下を入力して、正しく設定されたか、確認してみ
ls env:

irb さえ使わなければ、文字化けしないはず!

たぶん、ファイルの設定だろう。
sjis・CP932 じゃなく、BOM 無しUTF-8(UTF-8N)

それで、PowerShell から「ruby a.rb」などで実行できるはず。

または、VSCode のCode Runner でも出来る。
ただし、Code-runnerの設定ファイルで、File Directory As Cwd をチェックしておく

839 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 10:01:17.73 ID:rQGDkRcC0.net]
学校での話なら、友達か先生かに聞けよ。

840 名前:788 mailto:sage [2020/10/14(水) 10:07:17.92 ID:z5Uy/Vd30.net]
ただし、RUBYOPT に、--encoding=UTF-8 を設定した場合、
chcp はデフォルトの、CP932 のままにしておく!
65001 にしない

コマンドプロンプト・PowerShell で、chcp と入力してみ



841 名前:788 mailto:sage [2020/10/14(水) 10:21:16.97 ID:z5Uy/Vd30.net]
>>804
修正

>chcp はデフォルトの、CP932 のままにしておく!
>65001 にしない

RUBYOPT に、--encoding=UTF-8 を設定した場合、
CP932/65001 のどちらでも、文字化けしない。正常に動く

842 名前:デフォルトの名無しさん [2020/10/14(水) 11:42:15.98 ID:kgj1R+5V0.net]
>>805
ごめん!RUBYOPT変えた!
ファイルの設定ってプログラム書いてるテキストファイルの設定ってことですか?どうやって変えるのでしょうか? 一応Rubyopt変えただけだと文字化けしちゃってchcp 65001って実行してプログラム起動させたらコマンドプロンプトは落ちちゃった. PowerShellはもう日本語全部文字化けしちゃった

843 名前:788 mailto:sage [2020/10/14(水) 12:29:05.96 ID:z5Uy/Vd30.net]
たぶん、エディタの文字コードの設定メニューあたりから、
BOM 無しUTF-8(UTF-8N)に設定する

一番よいのは、VSCode で、Code Runner を使う

844 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 19:15:13.60 ID:Y0U/d7P+r.net]
>>801
noreadlineで起動すればいいって言ってんじゃん

845 名前:788 mailto:sage [2020/10/15(木) 06:56:58.31 ID:7eWumHpU0.net]
RUBYOPT に、--encoding=UTF-8 を設定すると、

irb --noreadline
で起動しても、エラーになる

846 名前:788 mailto:sage [2020/10/15(木) 07:13:17.57 ID:7eWumHpU0.net]
RUBYOPT に、--encoding=UTF-8 を設定すると、

irb --noreadline

irb -E UTF-8
irb -E Shift_JIS
で起動しても、エラーになる

847 名前:788 mailto:sage [2020/10/15(木) 07:32:54.02 ID:7eWumHpU0.net]
Windows では、RUBYOPT の、--encoding=UTF-8 と、irb は両立しない

irb を捨てて、VSCode のCode Runner を使う方がよい。
これで、選択したコード片、またはファイル全体を実行できる

その代わり、pry, rails console が使えなくなるかも?
よく分からないけど

848 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 14:56:39.44 ID:FYvAP3o60.net]
powershellじゃなくてレガシーコンソールのコマンドプロンプトを使わないとダメだったはず

849 名前:788 mailto:sage [2020/10/15(木) 15:46:22.07 ID:7eWumHpU0.net]
>>810
は、PowerShell・コマンドプロンプト

850 名前:フどちらでも、エラーになる []
[ここ壊れてます]



851 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 14:09:06.36 ID:cX3MrjsP0.net]
4,000行ほどのRubyプログラムをnode.jsに乗り換えようと思ってましたが
やっぱりRubyの方が便利な気がしてきました。
JSはローカル変数がちゃんと作れることやapplyが使えること、ifブロックやコメントの書き方などが
好きだったんですが元々ブラウザ用だったせいかファイル関連が非同期推奨ですし
stdoutとfileの違いもちゃんと意識しないといけなくなっているようです。
ファイル関連のライブラリも非同期のみの対応の場合も多いようで、Rubyに比べると
使い勝手に問題が有りそうです。
スクリプト言語の目的は簡単にプログラムしたいことですが、node.jsよりRubyの方が
ファイル関連は簡単なようです。

852 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 01:39:25.66 ID:xeOKOt4d0.net]
Rubyはちゃんとしたブロック変数が作りにくいことが欠点だと思っていたのですが
逆にnode.jsの場合、グローバル変数とローカル(ブロック)変数の違いが
最初の定義時にlet(またはvar)を書くかどうかだけで区別されており、
それはそれで危険な場面もあるように気付きました。
Rubyの場合は、先頭が$で始まる変数はグローバルになり、大文字で始まる変数は
グローバル定数になりますので、有る意味では安全ですし、命名規則としても
全てのプログラマで共通になりソースの分かり易さに貢献している可能性があります。
node.jsの場合、let文を書き忘れただけでグローバル変数になるのは原因不明の
バグが入り込む可能性を増やしている可能性があります。
また、Rubyは、system関数が便利です。
実際に使用してみた感想としてRubyは全体的に安定している印象を持ちましたが、
node.jsは、インストール時の一番大事な環境変数ですら自動設定されておらず、
プログラマー以外の人にプログラムを配布することは絶望的です。

853 名前:デフォルトの名無しさん [2020/10/18(日) 18:18:43.72 ID:WlQf1Fni0.net]
>最初の定義時に、let(またはvar)を書くかどうかだけで区別されており
VSCode ESLint とかで、チェックできるのでは?

Windows でも、50ms 以上掛かる、IO は非同期を推奨してるから、書きにくい

でも、Ruby on Rails 6 では、デフォルトで、Node.js, Webpack を使う

ただし、GUI はHTML, CSS/SASS, Bootstrap, JavaScript(JS)だけど、
サーバー側言語には、Rubyを使う

Rubyには最初から、C と同様、関数スコープがあった。
ES2015 で、JS にも出来たのかな?

854 名前:814 mailto:sage [2020/10/18(日) 18:30:15.98 ID:WlQf1Fni0.net]
YouTube で有名な雑食系エンジニア・KENTA は、
初心者が進む道を、サーバー側言語のRuby → Go を王道としてる

この2つ以外は、出てこない。
JavaScript, Python から始めろって絶対に言わない!

Python から始めてはいけないって言ってる。
「AIや機械学習に興味があるのでPythonから勉強」は誤りです。【YAGNIの法則】

KENTA は、10言語以上知っていて、
登録者数5万人、月千円のサロンが、2千人もいるから、
十分にヒアリングしてるし、どの言語が挫折確率が高いか、よく分かっている

855 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 18:36:30.11 ID:xWXtsYNK0.net]
KENTA「Rubyに拘泥する奴は伸びない。さっさと他の言語に進め」

856 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 19:10:33.77 ID:Ie2s5K3J0.net]
>>816
Cは、関数スコープというより、ブロックスコープ。
Rubyとは違う。

857 名前:デフォルトの名無しさん [2020/10/18(日) 20:35:28.25 ID:2aU6LfzH0.net]
KENTA「C++を始めるべき」

858 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 17:32:28.92 ID:iE1/WHvK0.net]
VSCodeなどにHTMLのLivePreview機能がありますが、
erbのLivePreview対応

859 名前:アプリケーションってありますか? []
[ここ壊れてます]

860 名前:デフォルトの名無しさん [2020/10/24(土) 08:32:09.72 ID:PENdR3tu0.net]
VSCode の拡張機能のLive Server では、Web Extension で、
PHP で作る動的ページも表示してるけど、ERB のやり方は分からない

https://chrome.google.com/webstore/detail/live-server-web-extension/fiegdmejfepffgpnejdinekhfieaogmj?hl=pt-BR

Rails 6 なら、webpack-dev-server が標準



861 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 14:35:22.81 ID:rBYTjNf90.net]
>>822
ありがとうございます
webpack-dev-server 調べてみます

862 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 21:01:22.94 ID:ehonUome0.net]
number = "0.072953"
float_number = number.to_f
bigdecimal_number = number.to_d

(1000 / float_number)
# => 13707.455485038312
(1000 / bigdecimal_number)
# => 0.13707455485038e5

1000.div(float_number)
# => 13707
1000.div(bigdecimal_number)
# => 13707

1000.fdiv(float_number)
# => 13707.455485038312
1000.fdiv(bigdecimal_number)
# => 2.22360747e-314

なぜ 1000.fdiv(bigdecimal_number) のときは 13707 台ではなく 2.2 e-314 になるの?
fdivの引数にdecimalは期待されていない?

863 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 21:05:37.26 ID:xQuuF55sr.net]
どっちも変わらん
p 100.fdiv(float_number) # => 1370.745548503831
p 100.fdiv(biddecimal_number) # => 1370.745548504

864 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 21:19:23.51 ID:6XNLJEFJ0.net]
biddecimalwwwww

865 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 21:23:11.77 ID:ehonUome0.net]
ありがとう
使ってるrubyのバージョンが低すぎるみたいだ

866 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 09:56:38.85 ID:/elpRfls0.net]
rubyはバージョン上げると前動いたコードが動かないからな。
そこらへんの互換性はjs>>php>>>python>>>rubyみたいな感じ。
行き当たりバッタリで以前の仕様気にせず変える。

867 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 10:48:16.22 ID:M7kzCKlu0.net]
>>828
phpは知らんけど
js >> ruby >>> python やろ

railsと違ってruby自体は後方互換性かなり高いぞ
CLI系なら10年以上前のものでもだいたい問題なく使える

pythonも言語自体は後方互換性高いが
バージョンごとにdeprecated/removedになるAPIはrubyよりずっと多い
それもあってメジャーなライブラリの新バージョン対応は遅くて
半年くらい待たないと言語の新しいバージョンを使えないし
言語の新バージョン + ライブラリの旧バージョンの組み合わせだと
動かなくなる率が高くてライブラリのAPI変更にも対応しないといけない

868 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 11:02:35.93 ID:/elpRfls0.net]
確かにpythonは2系と3系は隔絶してるけどマイナーバージョンアップでブッ壊れるのはrubyだろ

869 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 11:36:06.65 ID:M7kzCKlu0.net]
>>830
例えば?

870 名前:デフォルトの名無しさん [2020/10/25(日) 12:12:32.16 ID:usbfp6+yF.net]
C最強ですね判ります



871 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 13:00:13.81 ID:vQGWPLvqr.net]
マイナーバージョンアップで後方互換性がぶっ壊れた例
俺も気になるんで教えて

872 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 13:25:50.19 ID:M7kzCKlu0.net]
>>829
よく考えるとjsもクライアントサイドだけじゃなく
サーバーサイドで考えると動かなくなることあるな

rubyやpythonに比べて新陳代謝が激しくて
10年使い続けたりしないから気にならないだけかも

873 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 17:55:59.08 ID:y6I5Oh6cM.net]
>>831
リリースノートでも読め。
標準モジュールの変更とか。

874 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 18:04:13.90 ID:MTjKoQS00.net]
JIS規格化されてる

875 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 18:42:02.16 ID:M7kzCKlu0.net]
>>835
エアプでしたか
pythonと違ってrubyでは「標準モジュール」という言い方はしないよ

876 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 19:16:39.17 ID:y6I5Oh6cM.net]
>>837
んな言葉の違いはどうでも。w
ま、違いにあたらなければどうということはないから、

877 名前:キきにしろ。

実際にあたった人や、心配性にはツラい言語。
3以降は、絶対にないレベルにしてほしいものだ。
できればPerlレベルに。
[]
[ここ壊れてます]

878 名前:デフォルトの名無しさん [2020/10/26(月) 15:04:44.51 ID:EltRWJ/HF.net]
Ruby が C++ を Hate してるのはホント良く判る

879 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 16:25:50.97 ID:NTmfRHBrM.net]
>>838
Perlもエアプかいw
駱駝道で極楽浄土に行けるといいネ

880 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 17:52:56.78 ID:yxMoBvg5M.net]
>>840
今やPerl6は存在しないことを知らないの?w



881 名前:デフォルトの名無しさん [2020/10/28(水) 21:30:30.88 ID:H1Ljm7vl0.net]
>>2
リファクタリング:Rubyエディション (日本語) 単行本、2020/3、
Jay Fields/Shane Harvie/Martin Fowler/Kent Beck/長尾 高弘

Martin Fowlerの名著『リファクタリング』のRuby対応全面改訂版が、ついに復刊!
Kent Beck は、eXtreme Programming(XP)の提唱者

Java 版をRubyへ書き直したもの。
2010年の復刊。8,800円!

882 名前:デフォルトの名無しさん [2020/10/31(土) 08:20:00.50 ID:B8uNhuq7M.net]
ruby初心者です。

以下のNodeクラスにEnumerable moduleをincludeできるようなeachメソッドを
定義することはできますか。

class Node
attr_accessor :data, :next
def initialize(data)
@data = data
@next = nil
end
end

883 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 14:36:23.15 ID:zTfIs5nt0.net]
「Ruby Enumerable 実装」で検索!

Rubyで簡潔にeachなどの機能を持つクラスを実装する方法
https://ja.stackoverflow.com/questions/1593/ruby%E3%81%A7%E7%B0%A1%E6%BD%94%E3%81%ABeach%E3%81%AA%E3%81%A9%E3%81%AE%E6%A9%9F%E8%83%BD%E3%82%92%E6%8C%81%E3%81%A4%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95

Ruby: EnumerableをincludeするよりEnumeratorを返そう
https://techracho.bpsinc.jp/hachi8833/2018_06_29/57698

884 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 15:21:36.29 ID:OmKC8x+Wd.net]
>>843
https://ideone.com/IjTOn4

885 名前:デフォルトの名無しさん [2020/11/01(日) 00:02:35.61 ID:X6j+EvTNM.net]
>>844 さん
特に、>>845 さん
実装を教えていただいて、ありがとうございます。
https://ideone.com/IjTOn4に記載されていた実装は
私では考えつくことができませんでした。
何を勉強したら書けるようになるのか、悩みます。

ちなみにですが、私の考えたeachの実装は以下のようなものです。
class Node
  def each
  while self.next != nil
  yield self.data
  self.self.next
  end
  end
end
(でも、私のeachは動作しません。)

886 名前:デフォルトの名無しさん [2020/11/01(日) 00:07:41.13 ID:X6j+EvTNM.net]
>> 844
self.self.nextは、self = self.nextの誤記です。

887 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 02:18:36.47 ID:cH+o+Znx0.net]
Mix-in とは、何かのモジュールをinclude すると、
それが継承チェーンの親の所へ入ってくるから、
そのモジュール内の関数が使えるようになる

例えば、include Enumerable とすると、
自クラスで、each を定義してあれば、Enumerable内のすべての関数が使える

Array も、Enumerableをインクルードしているから、
Array内の関数と、Enumerable内の関数が使える

つまり普通に、複数のインスタンスを配列に入れておけば、
Array・Enumerable内の関数が使える

ほとんど、この2つのクラス内の関数ばかり

888 名前:を使うから、
どういう事ができるか、見ておいた方がよい

また、eachを定義せずに、Enumerableの機能を使うには、Enumerator を使う。
eachは内部イタレータで、Enumeratorは外部イタレータ

初心者はイタレータなど考えず、普通に配列内に入れておけばよい

デザインパターンなら、この本が良い。
改訂2版 Ruby逆引きハンドブック、2018
[]
[ここ壊れてます]

889 名前:846 [2020/11/02(月) 08:31:13.28 ID:cH+o+Znx0.net]
「Ruby each 実装」「ruby イテレータ 実装」で検索!
内部・外部イテレータの違いも、調べてみれば?

ruby eachの実装
https://teratail.com/questions/117974

890 名前:デフォルトの名無しさん [2020/11/03(火) 09:41:15.68 ID:XEwmRHqvp.net]
>>848さん
アドバイスありがとうございました。
示していただいたキーワードを使ってネットの情報を読み漁ってました。
rubyに関する基本的な文法知識も弱いのですが、デザインパターンという
考え方?思想?もわかっていないので、文法の習得と並行して勉強が必要だと
感じました。修業します。



891 名前:846 mailto:sage [2020/11/03(火) 22:57:00.33 ID:pWieQE6j0.net]
Mix-in の例で、include Enumerable して、
Enumerableモジュール内の関数が使えるように、
自クラスで、each を実装しましょうとか、
こういうのを初心者向けで見たことがない

ほとんど、こういう事をやってる人は、いないと思う

なぜかというと、Array は、Enumerableをインクルードしているから、
配列に入れれば、何でもできるから

だから、そもそも、どうしてこういう事をしようと思ったのか、疑問に思う

プログラミングのお題スレの問題でも、
すべて、Array, Hash, Enumerableで解ける

892 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 23:15:09.60 ID:eTFEu/to0.net]
>>851
遅延評価

893 名前:デフォルトの名無しさん [2020/11/04(水) 10:08:06.70 ID:wF8lqQTTF.net]
Ruby、信者は、おことわり

894 名前:846 mailto:sage [2020/11/04(水) 23:31:34.08 ID:oOk5Pqvr0.net]
一部のメソッドで、遅延評価できる

instance method Enumerable#lazy
lazy -> Enumerator::Lazy

map/collect, flat_map/collect_concat
select/find_all
reject
grep
take, take_while
drop, drop_while

一貫性のため、ブロックを渡さないケースのみlazy
zip, cycle

895 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 23:51:12.04 ID:lTVc+I7v0.net]
Enumerableは高階関数とともに脱初心者の一番の目安
この2つをパパっと作って使えるようになれば初心者は卒業

896 名前:846 mailto:sage [2020/11/05(木) 23:53:13.53 ID:lCe7ZMVj0.net]
Ruby の強みは、

Array, Hash, Enumerable, Enumerator の豊富なメソッドを、
メソッドチェーンでつなげていくプログラミング

どういうメソッドがあるのか、じっくり見ておくべき!

897 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 23:50:43.02 ID:DktN1QwS0.net]
TIOBE Index、perlより下じゃん

898 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 03:09:45.71 ID:YnyAcD/m0.net]
とうとうperlより下になったかw
誕生経緯w存在意義が…w

899 名前:デフォルトの名無しさん [2020/11/08(日) 10:17:52.02 ID:WJSuSySW0.net]
助成金ひっぱりんごビジネス

900 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 10:46:31.03 ID:msYgn7TJM.net]
エンベデッド詐欺
ストリーム詐欺



901 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 13:35:54.75 ID:P6MM9gKe0.net]
問題 Rubyを開発したのはだれか
答え 2ちゃんねる開発者でもあるひろゆき

根拠
https://programmercollege.jp/column/16456/

902 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 16:28:40.45 ID:2D8TgavPM.net]
もうすっかりマイナー言語だな






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<307KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef