プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ
質問するときは、OSやRubyのバージョン、エラーメッセージを書いて下さい。
Ruby on Rails については、WEBプログラミング板で
前スレ
Ruby 初心者スレッド Part 64
https://mevius.5ch.net/test/read.cgi/tech/1535797516/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
Ruby コミュニティ公式
https://www.ruby-lang.org/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
Ruby 初心者スレッド Part 65
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0f80-JI52)
2018/12/22(土) 04:43:34.03ID:84E3pYZa0723デフォルトの名無しさん (ワッチョイ 7f14-UBz4)
2019/09/30(月) 20:32:13.86ID:sHSicWZI0724722 (ワッチョイ 5f2c-+BGV)
2019/10/01(火) 22:53:28.60ID:9HRGRt020 CSV::Table#by_col! で、列単位で扱える。
そこで、delete(列名) で、列ごと削除できるけど、
事前に、列名が必要
任意の列数のCSV ファイルを扱う場合に、
事前に、列名がわからない場合に、どうすれば良いのか?
一旦、ヘッダー行を取得して、すべての列名を取得してから、処理すれば良いのか?
>>723
csvtool というコマンドがあるのですね
そこで、delete(列名) で、列ごと削除できるけど、
事前に、列名が必要
任意の列数のCSV ファイルを扱う場合に、
事前に、列名がわからない場合に、どうすれば良いのか?
一旦、ヘッダー行を取得して、すべての列名を取得してから、処理すれば良いのか?
>>723
csvtool というコマンドがあるのですね
725デフォルトの名無しさん (ワッチョイ 675f-+/Zc)
2019/10/02(水) 23:26:12.27ID:14D+F8tw0726デフォルトの名無しさん (ワッチョイ eaa5-P2X/)
2019/10/03(木) 12:16:59.30ID:PnP8AkUw0 Rubyに決めた!
727722 (ワッチョイ ea2c-2rUB)
2019/10/03(木) 15:24:11.67ID:qxa8VeaI0 できた!
by_col! でも、元のファイルを更新しない
それと、CSV.tableは、CSV.readに、幾つかのオプションを設定したものだから、
table = CSV.read( ARGV[ 0 ], headers:true, converters: :numeric, header_converters: :symbol )
コンバーターで、変数の型が自動変換されてしまう
require 'csv'
column_names =[ "AAA", "BBB" ]
# 引数は、入力ファイル名。ヘッダー行あり
table = CSV.read( ARGV[ 0 ], headers: true )
# 列モードにしてから、特定の列名以外を、削除する
puts table.by_col!.delete_if {
|column_name, values| !column_names.include? column_name }
by_col! でも、元のファイルを更新しない
それと、CSV.tableは、CSV.readに、幾つかのオプションを設定したものだから、
table = CSV.read( ARGV[ 0 ], headers:true, converters: :numeric, header_converters: :symbol )
コンバーターで、変数の型が自動変換されてしまう
require 'csv'
column_names =[ "AAA", "BBB" ]
# 引数は、入力ファイル名。ヘッダー行あり
table = CSV.read( ARGV[ 0 ], headers: true )
# 列モードにしてから、特定の列名以外を、削除する
puts table.by_col!.delete_if {
|column_name, values| !column_names.include? column_name }
728デフォルトの名無しさん (ワッチョイ ea2c-2rUB)
2019/10/09(水) 16:51:10.78ID:z4DviLBe0 Windows10, WSL, Ubuntu 16.04, Ruby 2.3 で、
pty, expect モジュールを使って、端末に自動入力しようとしたが、エラーになる!
この環境では、使えないのかな?
warning: Insecure world writable dir /mnt/c in PATH, mode 040777
/usr/lib/ruby/2.3.0/expect.rb:47:in `eof?':
Input/output error @ io_fillbuf - fd:7 /dev/pts/0 (Errno::EIO)
pty, expect モジュールを使って、端末に自動入力しようとしたが、エラーになる!
この環境では、使えないのかな?
warning: Insecure world writable dir /mnt/c in PATH, mode 040777
/usr/lib/ruby/2.3.0/expect.rb:47:in `eof?':
Input/output error @ io_fillbuf - fd:7 /dev/pts/0 (Errno::EIO)
729デフォルトの名無しさん (ワイーワ2 FF92-PqvS)
2019/10/09(水) 16:59:03.96ID:dDDCJBWOF 君の pwd の結果を曝すか
runas /user:administrator 汁
runas /user:administrator 汁
730728 (ワッチョイ ea2c-2rUB)
2019/10/09(水) 18:12:59.85ID:z4DviLBe0 Windows10, WSL, Ubuntu 16.04 の端末上で、
~/mytest/ruby/test に、スクリプトファイルを置いて、実行してる
ディレクトリ・ファイルのパーミッションは、rwxrwxrwx
確かに、/dev/pts/0 は存在しない(Errno::EIO)。
/dev/pts/ptmx しかない
WSL には、その機能が無いのかも
~/mytest/ruby/test に、スクリプトファイルを置いて、実行してる
ディレクトリ・ファイルのパーミッションは、rwxrwxrwx
確かに、/dev/pts/0 は存在しない(Errno::EIO)。
/dev/pts/ptmx しかない
WSL には、その機能が無いのかも
731デフォルトの名無しさん (ワッチョイ 8de0-llJn)
2019/10/09(水) 21:36:17.99ID:K/mDLqh/0 tty コマンド実行したらどうなる?
732デフォルトの名無しさん (ワイーワ2 FFdf-1wBF)
2019/10/10(木) 09:40:50.22ID:yMym0WfOF ちゃんと読め
Insecure world writable dir /mnt/c in PATH
Insecure world writable dir /mnt/c in PATH
733デフォルトの名無しさん (ドコグロ MMbf-Cvo3)
2019/10/10(木) 09:44:39.40ID:LUJumBxEM こいつ他のスレでRubyのネガキャンしてまわってるキチガイだろ
相手をするな
相手をするな
734デフォルトの名無しさん (アウアウカー Sa2b-eE0r)
2019/10/10(木) 15:46:12.72ID:Nxyr4aACa Rubyだけじゃないでしょ
この板に取り付いて自演してる糖質君だよ
そういう奴がいるという認識で無視しておけば無害
この板に取り付いて自演してる糖質君だよ
そういう奴がいるという認識で無視しておけば無害
735728 (ワッチョイ 9f2c-la4p)
2019/10/10(木) 18:57:06.29ID:dv1+zkCU0 Windows10, WSL, Ubuntu 16.04 の端末上で、
tty と入力すると、/dev/tty1 と表示される
Ruby ではなく、シェルスクリプトで、expect をしようか
tty と入力すると、/dev/tty1 と表示される
Ruby ではなく、シェルスクリプトで、expect をしようか
736728 (ワッチョイ 9f2c-la4p)
2019/10/10(木) 19:25:48.03ID:dv1+zkCU0 pty は仮想端末だから、ssh 接続をしないと使えないのかも
単に、端末に自動入力したいだけだから、
Ruby ではなく、シェルスクリプトで、expect をやってみる
apt では、sudo のパスワードを聞かれるから、それを自動入力したい
単に、端末に自動入力したいだけだから、
Ruby ではなく、シェルスクリプトで、expect をやってみる
apt では、sudo のパスワードを聞かれるから、それを自動入力したい
737728 (ワッチョイ 9f2c-la4p)
2019/10/10(木) 19:59:39.73ID:dv1+zkCU0 expect のサンプルが、pty を使ったものばかりだったから、ptyを使わなければ良いのかも?
expectだけでも使えるのか?
誰か、サンプルを書いて!
expectだけでも使えるのか?
誰か、サンプルを書いて!
738728 (ワッチョイ 9f2c-la4p)
2019/10/11(金) 00:40:11.94ID:SXeDtfTX0 Windows10, WSL, Ubuntu 16.04 の端末上で、
net/telnet モジュールを使って、Telnet で接続しようとしたが、エラーになった!
/usr/lib/ruby/vendor_ruby/net/telnet.rb:350:in `initialize':
Connection refused - connect(2) for "localhost" port 23 (Errno::ECONNREFUSED)
やっぱり、WSL は特殊
net/telnet モジュールを使って、Telnet で接続しようとしたが、エラーになった!
/usr/lib/ruby/vendor_ruby/net/telnet.rb:350:in `initialize':
Connection refused - connect(2) for "localhost" port 23 (Errno::ECONNREFUSED)
やっぱり、WSL は特殊
739デフォルトの名無しさん (ワイーワ2 FFdf-1wBF)
2019/10/11(金) 10:13:43.38ID:hkXt1GtmF Windows で Ruby 使ってもロクなことにならない
(WSL でもね)
(WSL でもね)
740デフォルトの名無しさん (ワッチョイ ffda-8cCB)
2019/10/11(金) 10:41:17.51ID:AqBy2q4Y0 ここの淀んだコミュニティはまだWindows目の敵にしてるのか
そんなんだからPythonにぶっちぎられちゃってるのに
そんなんだからPythonにぶっちぎられちゃってるのに
741デフォルトの名無しさん (ワイーワ2 FFdf-1wBF)
2019/10/11(金) 10:44:47.24ID:hkXt1GtmF 別に目の仇にしてる訳じゃないやろ
「rubyはなんでwindowsで使うと糞なの」
「じゃあおまいが対応汁」
「forkωωω」
「挫折」
の流れを繰り返してるだけ
屍累々
「rubyはなんでwindowsで使うと糞なの」
「じゃあおまいが対応汁」
「forkωωω」
「挫折」
の流れを繰り返してるだけ
屍累々
742デフォルトの名無しさん (ワッチョイ 9714-Gl4G)
2019/10/11(金) 10:59:31.96ID:PhVW6Uck0 >>738
お前がわかってないだけだろ
そのエラーはlocalhostでtelnetサーバーを起動してない、
もしくは接続が拒否されたって意味だ。
今どき暗号化されてないtelnetサーバーなんて使わないから
前者だろうな。
お前がわかってないだけだろ
そのエラーはlocalhostでtelnetサーバーを起動してない、
もしくは接続が拒否されたって意味だ。
今どき暗号化されてないtelnetサーバーなんて使わないから
前者だろうな。
743デフォルトの名無しさん (ワッチョイ 9714-Gl4G)
2019/10/11(金) 11:00:41.99ID:PhVW6Uck0 ちなみにWindows 10にはtelnetサーバーは付属してない。
744デフォルトの名無しさん (ワッチョイ 9714-Gl4G)
2019/10/11(金) 11:01:10.81ID:PhVW6Uck0 >>741
的はずれなレスをするな
的はずれなレスをするな
745728 (ワッチョイ 9f2c-la4p)
2019/10/11(金) 22:27:44.45ID:SXeDtfTX0 Windows10, WSL, Ubuntu 16.04 の端末上で、
tty と入力すると、/dev/tty1 と表示される
/dev/tty, /dev/tty0, /dev/tty1 などもある。
他にも、S が付いた、/dev/ttyS0 〜 /dev/ttyS191 もある
/dev/stdin, /dev/stdout, /dev/stderr もある
expect で、このあたりの、デバイスファイルを使えるかもしれない
>>738
Telnet の接続エラーは、port 23 が開いていないのかも
tty と入力すると、/dev/tty1 と表示される
/dev/tty, /dev/tty0, /dev/tty1 などもある。
他にも、S が付いた、/dev/ttyS0 〜 /dev/ttyS191 もある
/dev/stdin, /dev/stdout, /dev/stderr もある
expect で、このあたりの、デバイスファイルを使えるかもしれない
>>738
Telnet の接続エラーは、port 23 が開いていないのかも
746デフォルトの名無しさん (ワイーワ2 FFdf-1wBF)
2019/10/14(月) 11:56:07.71ID:Cg/ykvDAF747デフォルトの名無しさん (ワイーワ2 FFdf-1wBF)
2019/10/14(月) 11:56:43.70ID:Cg/ykvDAF748デフォルトの名無しさん (ワッチョイ 7f73-pTuN)
2019/10/20(日) 00:18:23.73ID:tI/yRj1E0 Rubyの課題が全然わからないので教えてほしいです。
1、0、−1、0が繰り返し表示されるようにしたいです。
when使ってできないでしょうか。
OS→windows10
Rubyバージョン→1.8.4
一応作ったのですが、nilが永遠にでます。
1、0、−1、0が繰り返し表示されるようにしたいです。
when使ってできないでしょうか。
OS→windows10
Rubyバージョン→1.8.4
一応作ったのですが、nilが永遠にでます。
749デフォルトの名無しさん (ワッチョイ 1201-dMft)
2019/10/20(日) 02:00:28.55ID:pHh2P92w0 作ったの貼るっしょ
750デフォルトの名無しさん (ワッチョイ 122c-pTuN)
2019/10/20(日) 08:32:27.73ID:ADDbXmaX0 Ruby 1.8.4 ?
もう、そんなに古いのは無理!
Windows 用のRubyInstaller でも、Ruby2.5.7。
Linux では、Ruby2.6.5 が最新だが、Windows では、1つ前のバージョンを使うこと!
Windows では、irb も日本語でバグるから、VSCode を使え!
Code Runner という拡張機能を入れると、
右クリックメニューから、選択したコードを実行できる
もう、そんなに古いのは無理!
Windows 用のRubyInstaller でも、Ruby2.5.7。
Linux では、Ruby2.6.5 が最新だが、Windows では、1つ前のバージョンを使うこと!
Windows では、irb も日本語でバグるから、VSCode を使え!
Code Runner という拡張機能を入れると、
右クリックメニューから、選択したコードを実行できる
751デフォルトの名無しさん (ワッチョイ 92a5-iRVk)
2019/10/20(日) 08:40:43.47ID:akKR2ina0 その問題を「1、0、−1、0を産む機械」と言い換えればすぐにyieldを使えばいいと分かる
whenなの?
whenなの?
752デフォルトの名無しさん (ワッチョイ b35f-dFI/)
2019/10/20(日) 09:10:18.66ID:X1mKFDBe0 0.step do |i|
p case i % 4
when 0 then 1
when 1 then 0
when 2 then -1
when 3 then 0
end
end
a = [1,0,-1,0]
0.step{|i| p a[i%4] }
>>750
> Linux では、Ruby2.6.5 が最新だが、Windows では、1つ前のバージョンを使うこと!
私の観測範囲が狭いのか2.6.5を使わない理由が見つからないのだが、なにかバグありました?
p case i % 4
when 0 then 1
when 1 then 0
when 2 then -1
when 3 then 0
end
end
a = [1,0,-1,0]
0.step{|i| p a[i%4] }
>>750
> Linux では、Ruby2.6.5 が最新だが、Windows では、1つ前のバージョンを使うこと!
私の観測範囲が狭いのか2.6.5を使わない理由が見つからないのだが、なにかバグありました?
753デフォルトの名無しさん (オッペケ Sr47-sprL)
2019/10/20(日) 09:57:11.30ID:V17Fc59sr >>748
(1..).each{|i| p (-1)**((i & 2) >> 1) * (i & 1)}
(1..).each{|i| p (-1)**((i & 2) >> 1) * (i & 1)}
754750 (ワッチョイ 122c-pTuN)
2019/10/20(日) 10:13:18.00ID:ADDbXmaX0 >>752
Windows 用のRuby は、いつも1つ前のバージョンを使う!
RubyInstaller のサイトにも、最新版を使わないようにと、いつも書いてある
Windowsでは、MSYS2 でコンパイルするモジュールなどが、
最新版に対応していないので、1年ぐらい待つ必要がある
Windows 用のRuby は、いつも1つ前のバージョンを使う!
RubyInstaller のサイトにも、最新版を使わないようにと、いつも書いてある
Windowsでは、MSYS2 でコンパイルするモジュールなどが、
最新版に対応していないので、1年ぐらい待つ必要がある
755デフォルトの名無しさん (ワッチョイ 6b7d-sepG)
2019/10/20(日) 10:18:26.35ID:lW4NmDBF0 >>748
loop{ puts 1, 0, -1, 0 }
loop{ puts 1, 0, -1, 0 }
756デフォルトの名無しさん (ワッチョイ b35f-dFI/)
2019/10/20(日) 11:35:59.48ID:X1mKFDBe0 >>754
RUBYINSTALLER-HEAD(https://github.com/oneclick/rubyinstaller2/releases/tag/rubyinstaller-head)については書いてありますが
latestについては記述見つかりませんでしたが、どこに書いてありますか?
> MSYS2 でコンパイルするモジュールなどが、
コンパイル済みのfat-gemが問題起こしてる印象があり、なくならねぇかな・・・と思ってますね
RUBYINSTALLER-HEAD(https://github.com/oneclick/rubyinstaller2/releases/tag/rubyinstaller-head)については書いてありますが
latestについては記述見つかりませんでしたが、どこに書いてありますか?
> MSYS2 でコンパイルするモジュールなどが、
コンパイル済みのfat-gemが問題起こしてる印象があり、なくならねぇかな・・・と思ってますね
757750 (ワッチョイ 122c-pTuN)
2019/10/20(日) 12:06:18.48ID:ADDbXmaX0 https://rubyinstaller.org/
以前は、このトップページか、Download のページに書いてあったけど、文章が変わったみたい
まあでも、このスレでも、Windows では、最新バージョンは使うなという書き込みがあったから、
たぶん、1つ前のバージョンを使わないと、依存関係が解決できないのだろう
とにかく、Mac を使っている人は、Windowsの依存関係が地獄だから、皆Macへ移った
以前は、このトップページか、Download のページに書いてあったけど、文章が変わったみたい
まあでも、このスレでも、Windows では、最新バージョンは使うなという書き込みがあったから、
たぶん、1つ前のバージョンを使わないと、依存関係が解決できないのだろう
とにかく、Mac を使っている人は、Windowsの依存関係が地獄だから、皆Macへ移った
758デフォルトの名無しさん (ワッチョイ d201-4js2)
2019/10/20(日) 12:16:45.81ID:MDf6mYD+0 [1,0,-1,0].cycle {|x| puts x} #無限
[1,0,-1,0].cycle(3) {|x| puts x} #サイクル数指定
[1,0,-1,0].cycle.take(10).each {|x| puts x} #要素数指定
cycle再発明したいならEnumeratorを返す方法を学ぶ
[1,0,-1,0].cycle(3) {|x| puts x} #サイクル数指定
[1,0,-1,0].cycle.take(10).each {|x| puts x} #要素数指定
cycle再発明したいならEnumeratorを返す方法を学ぶ
759デフォルトの名無しさん (ワイーワ2 FF6a-uHRg)
2019/10/20(日) 12:46:50.25ID:9lZC9vgyF ひょっとすると Ruby は糞なのかも知れない
10.times{|n|puts Math::cos(n*Math::PI/2) <=> 0}
10.times{|n|puts Math::cos(n*Math::PI/2) <=> 0}
760デフォルトの名無しさん (ワイーワ2 FF6a-uHRg)
2019/10/20(日) 12:48:22.43ID:9lZC9vgyF 10.times{|n|puts Math.sign(Math::cos(n*Math::PI/2))}
10.times{|n|puts Numeric.sign(Math::cos(n*Math::PI/2))}
10.times{|n|puts Number.sign(Math::cos(n*Math::PI/2))}
10.times{|n|puts Numeric.sign(Math::cos(n*Math::PI/2))}
10.times{|n|puts Number.sign(Math::cos(n*Math::PI/2))}
761デフォルトの名無しさん (ワイーワ2 FF6a-uHRg)
2019/10/20(日) 12:56:08.24ID:9lZC9vgyF 糞は漏れだった orz
10.times{|n|puts Math::cos(n*Math::PI/2).to_i}
10.times{|n|puts Math::cos(n*Math::PI/2).to_i}
762デフォルトの名無しさん (オッペケ Sr47-sprL)
2019/10/21(月) 12:00:03.97ID:ZDMJHUdnr >>758が一番スマートだな
763デフォルトの名無しさん (ワッチョイ 3714-V5T5)
2019/10/21(月) 13:13:03.03ID:a2dL9b0A0 >>760みたいに下手に計算するより早いしね!
764デフォルトの名無しさん (オッペケ Sr47-sprL)
2019/10/21(月) 13:27:57.28ID:ZDMJHUdnr いやそもそも>>759-761は間違ってる
765デフォルトの名無しさん (ワッチョイ 3714-V5T5)
2019/10/21(月) 13:42:33.89ID:a2dL9b0A0766デフォルトの名無しさん (オッペケ Sr47-sprL)
2019/10/21(月) 14:06:09.86ID:ZDMJHUdnr 流石に本気で三角関数使って実装しようなんて思ってないだろうしそこは別にネタで言ってんだと思うけど
ネタとしても面白くはないけど
ネタとしても面白くはないけど
767デフォルトの名無しさん (アウアウウー Sa43-gDzD)
2019/10/21(月) 16:50:50.88ID:RCZWOoQNa そもそも>>748はhello worldレベルの初心者だろうに、回答者が求めてるものを無視して俺の解き方見てくれ!って奴ばかりなのは問題だと思う
768デフォルトの名無しさん (ワイーワ2 FF6a-uHRg)
2019/10/21(月) 17:07:36.09ID:5+ah6i6TF 禁止事項
トリを使おうとしている質問者に対して、そんなトリはやめろとかという、斜め上からのアドバイス
質問者そっちのけでの昔語り(昔はもっと苦労したもんだ、今の若い者は…)
知らないのに、使ったことないのに、知ったかぶりでの書き込み
ググれという誰でも言えそうな忠告
俺は知ってるけど言わない等といった、実社会での扱われ方からの僻みから来る
意地悪な言辞
回答はあくまでボランティアなので、質問者は、回答がつかなかったり、
期待に沿った回答が得られなかったからといって切れたりしないように。
また、わざとそういう困った質問者を演じて釣りに来る人もいるかもしれないので、
回答者も、むかついたからといって、いちいち切れて反応せずスルーしよう。
そして質問者はもう出て来ない
トリを使おうとしている質問者に対して、そんなトリはやめろとかという、斜め上からのアドバイス
質問者そっちのけでの昔語り(昔はもっと苦労したもんだ、今の若い者は…)
知らないのに、使ったことないのに、知ったかぶりでの書き込み
ググれという誰でも言えそうな忠告
俺は知ってるけど言わない等といった、実社会での扱われ方からの僻みから来る
意地悪な言辞
回答はあくまでボランティアなので、質問者は、回答がつかなかったり、
期待に沿った回答が得られなかったからといって切れたりしないように。
また、わざとそういう困った質問者を演じて釣りに来る人もいるかもしれないので、
回答者も、むかついたからといって、いちいち切れて反応せずスルーしよう。
そして質問者はもう出て来ない
769デフォルトの名無しさん (ワッチョイ 37e7-6fT3)
2019/10/21(月) 17:50:42.35ID:fwYGRAlp0770769 (ワッチョイ 37e7-6fT3)
2019/10/21(月) 19:35:56.70ID:fwYGRAlp0771デフォルトの名無しさん (オッペケ Sr47-sprL)
2019/10/22(火) 11:21:00.25ID:wZUXcjF6r いやどうみてもnがちょっとでかくなったら正しくなくなることくらい自明だろ
同じ発想でやりたいなら複素平面とかπ/2の回転行列とか使って計算すればいいだけ
ただし奇を衒った回答としては斬新さにかけて面白くないと言っている
で>>758が一番スマート(かつ自分でもそうする)って言ってるんだがなんなんやこいつ
同じ発想でやりたいなら複素平面とかπ/2の回転行列とか使って計算すればいいだけ
ただし奇を衒った回答としては斬新さにかけて面白くないと言っている
で>>758が一番スマート(かつ自分でもそうする)って言ってるんだがなんなんやこいつ
772デフォルトの名無しさん (ワイーワ2 FF6a-uHRg)
2019/10/22(火) 11:24:07.59ID:fxbuxtP/F >nがちょっとでかくなったら正しくなくなる
2π で mod すればいい
2π で mod すればいい
773デフォルトの名無しさん (ワッチョイ 7f73-pTuN)
2019/10/22(火) 11:42:16.77ID:Bl/xGts70 質問したものです。皆さん様々な意見ありがとうございます。考えてくださってとても感謝しています。
皆さんのを見ながらなんとかできました!
ありがとうございました。
皆さんのを見ながらなんとかできました!
ありがとうございました。
774デフォルトの名無しさん (ワッチョイ 6373-sEIE)
2019/10/26(土) 11:19:55.92ID:VCWPcpX80 def break_test
return break
end
i = 10;
while i > 0
next_test
}
放置すれば無限ループになるのをbreak_testでループを
抜けたいのですが、関数?からnext や breakなどを
返すようにできないのでしょうか。
return break
end
i = 10;
while i > 0
next_test
}
放置すれば無限ループになるのをbreak_testでループを
抜けたいのですが、関数?からnext や breakなどを
返すようにできないのでしょうか。
775デフォルトの名無しさん (ワッチョイ 6373-sEIE)
2019/10/26(土) 11:21:02.82ID:VCWPcpX80 ごめんなさい、
i = 10;
while i > 0
break_test
}
でした。
i = 10;
while i > 0
break_test
}
でした。
776デフォルトの名無しさん (ワッチョイ ff2c-vu2g)
2019/10/26(土) 12:47:43.93ID:751XFDvk0 そういうキーワードそのものは、返せないだろ
戻り値は、0, 1 などの整数とか、
フラグとして、true, false の真偽値とか、
:next, :break みたいなシンボルとか、文字列とか
戻り値は、0, 1 などの整数とか、
フラグとして、true, false の真偽値とか、
:next, :break みたいなシンボルとか、文字列とか
777デフォルトの名無しさん (ワッチョイ ffa5-7KPZ)
2019/10/26(土) 13:32:18.57ID:aCoOcfZt0 キーワードデリゲーションをすればいいんだろ
かんたんじゃん
かんたんじゃん
778デフォルトの名無しさん (ワッチョイ ff01-E1XV)
2019/10/26(土) 13:42:24.92ID:ZMkO6rZZ0779デフォルトの名無しさん (ワッチョイ bf33-1RvR)
2019/10/26(土) 19:48:47.03ID:zP6esb2p0 >>774
斬新な発想だな。w
Rubyに限らず一般的に、制御を移すしくみは、関数(メソッド)の範囲を越えることはできない。
ただし、「例外」ならそれ以降をすっとばすことができるので、break相当ならできるかも?
# 勧めないけど。
斬新な発想だな。w
Rubyに限らず一般的に、制御を移すしくみは、関数(メソッド)の範囲を越えることはできない。
ただし、「例外」ならそれ以降をすっとばすことができるので、break相当ならできるかも?
# 勧めないけど。
780デフォルトの名無しさん (ワッチョイ bf33-1RvR)
2019/10/26(土) 19:56:33.83ID:zP6esb2p0781デフォルトの名無しさん (ワッチョイ 6373-sEIE)
2019/10/26(土) 22:09:58.48ID:VCWPcpX80 >>778
実際はwhileじゃなくて
xxxxx.each do |key|
同じようなことする関数(引数)
同じようなことする関数(引数)
同じようなことする関数(引数)
end
の中で関数の中身がある条件だったら
nextで残りをやらずにeach.doの最初からやりたいんですけど
引数の値が違うだけなのに
例えば関数にTrueを返したら next しろとか条件をいちいち
付けるのもめんどくさいと思い、質問してみました。
実際はwhileじゃなくて
xxxxx.each do |key|
同じようなことする関数(引数)
同じようなことする関数(引数)
同じようなことする関数(引数)
end
の中で関数の中身がある条件だったら
nextで残りをやらずにeach.doの最初からやりたいんですけど
引数の値が違うだけなのに
例えば関数にTrueを返したら next しろとか条件をいちいち
付けるのもめんどくさいと思い、質問してみました。
782デフォルトの名無しさん (ワッチョイ 6373-sEIE)
2019/10/26(土) 22:13:03.44ID:VCWPcpX80 xxxxx.each do |key|
if 同じようなことする関数(引数) then next
if 同じようなことする関数(引数) then next
if 同じようなことする関数(引数) then next
end
Rubyにあまり詳しくないのでよくわからないのですが
こんな感じなのでしょうか?
if 同じようなことする関数(引数) then next
if 同じようなことする関数(引数) then next
if 同じようなことする関数(引数) then next
end
Rubyにあまり詳しくないのでよくわからないのですが
こんな感じなのでしょうか?
783デフォルトの名無しさん (ワッチョイ a3e0-Oqw9)
2019/10/26(土) 23:35:07.98ID:BPSgYag60 慣習的に返り値を成否にすることが多いから論理を逆にして
xxxxx.each do |key|
同じようなことする関数(引数) &&
同じようなことする関数(引数) &&
同じようなことする関数(引数)
end
xxxxx.each do |key|
next unless 同じようなことする関数(引数)
next unless 同じようなことする関数(引数)
同じようなことする関数(引数)
end
xxxxx.each do |key|
同じようなことする関数(引数) &&
同じようなことする関数(引数) &&
同じようなことする関数(引数)
end
xxxxx.each do |key|
next unless 同じようなことする関数(引数)
next unless 同じようなことする関数(引数)
同じようなことする関数(引数)
end
784デフォルトの名無しさん (ワッチョイ ff01-E1XV)
2019/10/27(日) 00:24:39.23ID:wfElRmia0 >>781
なるほど
自分ならオプショナルチェーン的なのを使うか
「同じようなことする関数」をメソッドオブジェクトかProcにして配列に入れて
true返したらnextしろって書くのを1箇所にする
https://ideone.com/I7hyOs
https://ideone.com/VQMgg2
なるほど
自分ならオプショナルチェーン的なのを使うか
「同じようなことする関数」をメソッドオブジェクトかProcにして配列に入れて
true返したらnextしろって書くのを1箇所にする
https://ideone.com/I7hyOs
https://ideone.com/VQMgg2
785デフォルトの名無しさん (ワッチョイ ff2c-vu2g)
2019/10/27(日) 05:02:59.99ID:hJUpCTqv0 jQuery.each( object, callback )
これは、jQueryの繰り返し処理用の関数。
配列/オブジェクトで使える
繰り返し処理中に、ループを抜けたい場合(一般的なループ処理で言うところのbreak)、
コールバック関数で、falseを返すことで実装できます。
それ以外の値を返した場合は、無視されます
これは、jQueryの繰り返し処理用の関数。
配列/オブジェクトで使える
繰り返し処理中に、ループを抜けたい場合(一般的なループ処理で言うところのbreak)、
コールバック関数で、falseを返すことで実装できます。
それ以外の値を返した場合は、無視されます
786デフォルトの名無しさん (ワッチョイ 53f3-cmPQ)
2019/10/27(日) 05:08:22.73ID:+BT3KxOb0787デフォルトの名無しさん (ワッチョイ c314-BWw0)
2019/10/27(日) 10:29:27.71ID:EzDt4vDz0 ifのネストができないとかなので
qiitaの「オレオレ言語作ってみた」記事レベル
qiitaの「オレオレ言語作ってみた」記事レベル
788デフォルトの名無しさん (オッペケ Sr47-eGmw)
2019/10/27(日) 10:35:17.49ID:4XYnNnzNr いや、さすがにそれよりは完成度高かったよ
789デフォルトの名無しさん (ワッチョイ 2314-BWw0)
2019/10/27(日) 10:40:08.22ID:Lik42TLZ0 あとgithubプロジェクトには、オブジェクトファイルとか
vimのスワップファイルとかも入っていて周辺知識もない
つまりはプログラミング全般の幅広い知識をつけて、
言語開発できるレベルになったと言うより
言語作ってみたくて、それ関連の知識をぐぐってコピペした程度
再帰を知ってるかも怪しいw
vimのスワップファイルとかも入っていて周辺知識もない
つまりはプログラミング全般の幅広い知識をつけて、
言語開発できるレベルになったと言うより
言語作ってみたくて、それ関連の知識をぐぐってコピペした程度
再帰を知ってるかも怪しいw
790デフォルトの名無しさん (オッペケ Sr47-eGmw)
2019/10/27(日) 10:44:23.07ID:4XYnNnzNr 中学生相手に謎のマウントとって恥ずかしくないんかこのおっさん
791デフォルトの名無しさん (ワッチョイ 6f8c-cmPQ)
2019/10/27(日) 11:37:21.19ID:vygsvak+0 どこにも新人を虐め殺す人はいる。
792デフォルトの名無しさん (ワッチョイ ff2c-vu2g)
2019/10/27(日) 11:58:18.66ID:hJUpCTqv0 養成読本シリーズのムック本が出た!
Software Design plusシリーズ
Ruby on Rails 6 エンジニア養成読本、2019/10/26
著者は、すがわらまさのり,前島真一
Software Design plusシリーズ
Ruby on Rails 6 エンジニア養成読本、2019/10/26
著者は、すがわらまさのり,前島真一
793デフォルトの名無しさん (ワッチョイ ffa5-7KPZ)
2019/10/27(日) 12:17:41.60ID:Cn2fohUL0 養成ギプスじゃねーのなこのシリーズ
794デフォルトの名無しさん (ワッチョイ 6373-ynHG)
2019/10/28(月) 23:21:57.76ID:FXEIy8w10795デフォルトの名無しさん (ワッチョイ 6373-ynHG)
2019/10/29(火) 06:00:13.39ID:wBa+308I0796デフォルトの名無しさん (ワッチョイ 6373-ynHG)
2019/10/29(火) 06:25:03.68ID:wBa+308I0 >>785
Ruby on Rails入れてませんがjqueryが使えるのでしょうか。
Ruby on Rails入れてませんがjqueryが使えるのでしょうか。
797デフォルトの名無しさん (スップ Sd1f-PDRl)
2019/10/29(火) 23:05:22.63ID:wWZj5nZGd github の ignoreとか適当だから、objとか普通にアップしてるな。
仕事ならまだしも、個人ねやつなんか、完全やバックアップもくてきだから、
あまりにデカイみだな .db とか除いて、全部あっふだわ。
個人のリポジドリも200とか超え始めると、一つ一つ丁寧に設定なんかしとれんわ。
githubやエディタ独自仕様に振り回される必要なし。
仕事ならまだしも、個人ねやつなんか、完全やバックアップもくてきだから、
あまりにデカイみだな .db とか除いて、全部あっふだわ。
個人のリポジドリも200とか超え始めると、一つ一つ丁寧に設定なんかしとれんわ。
githubやエディタ独自仕様に振り回される必要なし。
798デフォルトの名無しさん (ワッチョイ ff2c-vu2g)
2019/10/30(水) 01:59:02.44ID:p2ffZ2o00799デフォルトの名無しさん (エムゾネ FF1f-Tlcr)
2019/10/30(水) 13:12:15.78ID:Jt7N9BVBF800デフォルトの名無しさん (ワッチョイ ca2c-0B+f)
2019/11/04(月) 16:33:35.55ID:Zu03xGz40 あるフォルダ内の子フォルダだけを取得するのに、こう書いているのですが、
PowerShell みたいに、ls -Directory
など、もっと簡単に書けないの?
target_dir = "C:/Users/Owner/Documents/*"
p dest_dirs = Dir.glob( target_dir ).select { |path| File.directory?( path ) }
return if dest_dirs.length == 0 # フォルダが存在しない
PowerShell みたいに、ls -Directory
など、もっと簡単に書けないの?
target_dir = "C:/Users/Owner/Documents/*"
p dest_dirs = Dir.glob( target_dir ).select { |path| File.directory?( path ) }
return if dest_dirs.length == 0 # フォルダが存在しない
801デフォルトの名無しさん (ミカカウィ FF27-xbEI)
2019/11/04(月) 16:36:49.84ID:6GYoHHZPF RubyはUNIXで使うものであり、シェルコマンドも積極的に使うのが前提
Rubyから普通にlsを呼べ基地外
Rubyから普通にlsを呼べ基地外
802デフォルトの名無しさん (ワッチョイ 8a01-ODnH)
2019/11/04(月) 19:06:35.57ID:KBcuTkU10 単発で使う分には十分簡単に書けてると思うが
繰り返し書く必要があるなら自分でメソッド抽出すればよくね?
繰り返し書く必要があるなら自分でメソッド抽出すればよくね?
803800 (ワッチョイ ca2c-0B+f)
2019/11/04(月) 19:37:03.85ID:Zu03xGz40 Dir.glob( "パス", :directory )
みたいに、ブロックじゃなくて、
オプション・シンボルなどで、簡単に指定できれば
みたいに、ブロックじゃなくて、
オプション・シンボルなどで、簡単に指定できれば
804デフォルトの名無しさん (アウアウカー Sacb-ENpr)
2019/11/04(月) 20:32:46.29ID:15pQYryDa >>800
むしろPowerShellが凄い
むしろPowerShellが凄い
805デフォルトの名無しさん (ワッチョイ 8a01-ODnH)
2019/11/04(月) 22:33:04.21ID:KBcuTkU10 Dir.glob('*/')
806デフォルトの名無しさん (アウアウウー Sa2f-x9nz)
2019/11/05(火) 21:08:09.25ID:z9XdE4jra rubyを使い出して2週間なのですが困っています。
今は汎用機のログの一括処理に使っているのですが、
半角カナや漢字が文字化けして読み込まれます。
ログファイルはwindowsにsjisで保存されていて、
これをsjis指定で読み込んでも\x33等と化けます。
どうすれば半角カナが化けないように読めるのでしょうか。
今は汎用機のログの一括処理に使っているのですが、
半角カナや漢字が文字化けして読み込まれます。
ログファイルはwindowsにsjisで保存されていて、
これをsjis指定で読み込んでも\x33等と化けます。
どうすれば半角カナが化けないように読めるのでしょうか。
807デフォルトの名無しさん (ワッチョイ c68c-fAkU)
2019/11/05(火) 22:01:22.14ID:+vsp0I/Q0 sjis指定で読み込んでると思い込んでるだけで実際はutf-8になってるんじゃないかな
あるいはログがsjisと思い込んでるだけという線もありうる
もしくは書き出しがsjisになってないとか
可能性を挙げたらきりがない
コードをさらすのが解決への近道
あるいはログがsjisと思い込んでるだけという線もありうる
もしくは書き出しがsjisになってないとか
可能性を挙げたらきりがない
コードをさらすのが解決への近道
808デフォルトの名無しさん (アウアウウー Sa2f-xbEI)
2019/11/05(火) 22:19:23.14ID:HJJtuDtXa 汎用機のデータをRubyで処理とか懐かしいな
俺もやってたわ
結局転職するのが唯一にして最良のソリューションだから、あまり変なことに拘って時間を無駄にするよりAWSの勉強でもしたほうがいいよ
俺もやってたわ
結局転職するのが唯一にして最良のソリューションだから、あまり変なことに拘って時間を無駄にするよりAWSの勉強でもしたほうがいいよ
809デフォルトの名無しさん (ワッチョイ 8a01-ODnH)
2019/11/05(火) 23:08:03.80ID:rzC/SdAh0 >>806
どういう環境を使って
どういう方法でエンコーディング指定をしていて
どうやって読み込んで、どこに出力して、出力結果をどうやって確認してるのか?
そういう情報が必要
Ruby関係なくエンコーディングに対する理解を深めたほうが良さげ
基本的には外部エンコーディングと内部エンコーディングを指定すれば問題なし
https://docs.ruby-lang.org/ja/2.6.0/class/IO.html#io_encoding
>File.read('sjis.log', mode: "rt:sjis:utf-8")
どういう環境を使って
どういう方法でエンコーディング指定をしていて
どうやって読み込んで、どこに出力して、出力結果をどうやって確認してるのか?
そういう情報が必要
Ruby関係なくエンコーディングに対する理解を深めたほうが良さげ
基本的には外部エンコーディングと内部エンコーディングを指定すれば問題なし
https://docs.ruby-lang.org/ja/2.6.0/class/IO.html#io_encoding
>File.read('sjis.log', mode: "rt:sjis:utf-8")
810デフォルトの名無しさん (アウアウウー Sa2f-x9nz)
2019/11/06(水) 00:03:50.72ID:lUVlDRaka >806です
解決しました。
エンコードにsjisではなくwindows-31Jを
指定すると半角カナを文字化けせずに読めました。
ファイルの文字コードは確実にsjisなのに、
なんでsjis指定で読み込んだら化けるのか分かりませんが、
ひとまず解決です。
解決しました。
エンコードにsjisではなくwindows-31Jを
指定すると半角カナを文字化けせずに読めました。
ファイルの文字コードは確実にsjisなのに、
なんでsjis指定で読み込んだら化けるのか分かりませんが、
ひとまず解決です。
811デフォルトの名無しさん (アウアウウー Sa2f-x9nz)
2019/11/06(水) 00:05:50.13ID:lUVlDRaka812デフォルトの名無しさん (ワッチョイ 7a33-DbiX)
2019/11/06(水) 02:48:09.37ID:normnvJW0 >>810
一般に、Shift_JIS(標準規格)とcp932(Windowsカスタム)は別物。
Rubyでもそうらしい。
https://docs.ruby-lang.org/ja/latest/class/Encoding.html#S_ALIASES
一般に、Shift_JIS(標準規格)とcp932(Windowsカスタム)は別物。
Rubyでもそうらしい。
https://docs.ruby-lang.org/ja/latest/class/Encoding.html#S_ALIASES
813デフォルトの名無しさん (アウウィフ FF2f-DOEl)
2019/11/06(水) 11:43:12.78ID:o3tEvZiYF 半角カタカナ ← 混ぜるな危険
30年くらい前の話
30年くらい前の話
814デフォルトの名無しさん (アウアウウー Sa2f-x9nz)
2019/11/06(水) 11:50:52.64ID:SpldiVNta815デフォルトの名無しさん (アウアウウー Sa2f-x9nz)
2019/11/06(水) 11:52:59.82ID:SpldiVNta >>813
漢字も駄目なのでやや難易度高しです。
漢字も駄目なのでやや難易度高しです。
816デフォルトの名無しさん (アウウィフ FF2f-DOEl)
2019/11/06(水) 12:34:12.51ID:o3tEvZiYF いいがかりは止せ
SJISファイルじゃないんだから当然だろ
SJISファイルじゃないんだから当然だろ
817デフォルトの名無しさん (ワッチョイ ca2c-0B+f)
2019/11/06(水) 13:41:03.82ID:ZR40S1lI0 Windows では一般用語として、sjis と書くけど、
厳密には、sjisを拡張した、CP932 の事です。
だから、MS が独自に拡張した部分は、sjisではない!
漏れは、Windows で、PowerShell を使って、クリップボード処理を書いているけど、
Windows(CP932) ←→ Ruby(utf8) と、外部環境とruby内で、文字コードを変換している
クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
ary = str.each_line.map( &:strip ) # 連続する空白類を除去する
IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
厳密には、sjisを拡張した、CP932 の事です。
だから、MS が独自に拡張した部分は、sjisではない!
漏れは、Windows で、PowerShell を使って、クリップボード処理を書いているけど、
Windows(CP932) ←→ Ruby(utf8) と、外部環境とruby内で、文字コードを変換している
クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
ary = str.each_line.map( &:strip ) # 連続する空白類を除去する
IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
818デフォルトの名無しさん (ワッチョイ de14-EL77)
2019/11/06(水) 15:16:56.50ID:Z1mcKm+J0 別にMSがSJISを拡張したんじゃないけどな。
そもそもSJIS本家を作ったのがMS(+他)なわけで。
じゃあ拡張したのは誰かというとIBMとかNECだよ
まあそもそも拡張可能にしていんだけどな
MSなどがSJISを作った。IBMやNECが拡張した。
それらを取り込んでWindowssのCP932とした。というのが正しい流れ
ちなみにAppleもSJISを拡張してる。それはMacJapaneseと呼ばれる。
拡張部分がIBMやNECが拡張した部分とかぶってるので互換性がないんだけどな
そもそもSJIS本家を作ったのがMS(+他)なわけで。
じゃあ拡張したのは誰かというとIBMとかNECだよ
まあそもそも拡張可能にしていんだけどな
MSなどがSJISを作った。IBMやNECが拡張した。
それらを取り込んでWindowssのCP932とした。というのが正しい流れ
ちなみにAppleもSJISを拡張してる。それはMacJapaneseと呼ばれる。
拡張部分がIBMやNECが拡張した部分とかぶってるので互換性がないんだけどな
819デフォルトの名無しさん (ワッチョイ 8a01-ODnH)
2019/11/06(水) 15:39:23.65ID:Fx0hE3mY0 >Encoding.aliases.select {|_,v| v == "Windows-31J"}
{"CP932"=>"Windows-31J",
"csWindows31J"=>"Windows-31J",
"SJIS"=>"Windows-31J",
"PCK"=>"Windows-31J"}
Rubyでは"SJIS"も"CP932"もWindows-31Jのエイリアスなんだけど
SJISの指定をWindows-31Jに変更して解決する事があるんですねー(棒)
{"CP932"=>"Windows-31J",
"csWindows31J"=>"Windows-31J",
"SJIS"=>"Windows-31J",
"PCK"=>"Windows-31J"}
Rubyでは"SJIS"も"CP932"もWindows-31Jのエイリアスなんだけど
SJISの指定をWindows-31Jに変更して解決する事があるんですねー(棒)
820デフォルトの名無しさん (ワッチョイ c68c-fAkU)
2019/11/06(水) 18:22:07.75ID:8bqr3nzy0 半角カナや大半の漢字はsjis範囲内だからきちんとsjisで読めばほぼ文字化けはないはず
つまりsjisで読めていなかったということ
つまりsjisで読めていなかったということ
821デフォルトの名無しさん (ワッチョイ 0314-EL77)
2019/11/06(水) 19:09:22.79ID:wTTuQQRz0 >>819
エンコーディングは同じで文字集合が違うだけだからね
エンコーディングは同じで文字集合が違うだけだからね
822デフォルトの名無しさん (ワッチョイ 077d-qsv/)
2019/11/06(水) 19:26:39.67ID:GIJSYcug0 リファレンスマニュアルの aliases -> Hash の例
"SJIS"=>"Shift_JIS" は間違いですね
Encoding::SJIS == Encoding::CP932 #=> true
Encoding::SJIS == Encoding::Windows_31J #=> true
Encoding::SJIS == Encoding::Shift_JIS #=> false
"SJIS"=>"Shift_JIS" は間違いですね
Encoding::SJIS == Encoding::CP932 #=> true
Encoding::SJIS == Encoding::Windows_31J #=> true
Encoding::SJIS == Encoding::Shift_JIS #=> false
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す ★3 [蚤の市★]
- 中国側が首相答弁の撤回要求、日本側拒否 [夜のけいちゃん★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 映画「鬼滅の刃」の興行収入急減、日本行き航空券大量キャンセル…中国メディア報道 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 「タワマン天国」に飛びつく若者…SNSに転がる「成功体験」に続けるのか 湾岸エリアの業者が語った現実 [蚤の市★]
- 【悲報】高市効果で「1ドル=160円」が相場へwwwwwwwwwwwwwwwwwwwwwwwwwwwww 止まらぬ高市円安💥💥 [871926377]
- 小川彩佳アナ「高市総理はここまで影響が出ることを想像して発言したんでしょうか」高市ソルジャー「!!!!(シュババババ)」 [931948549]
- 【悲報】おこめ券、9.5億円配布分のうち2.4億が経費、うちJAが1億円中抜き🤗高市ありがとう [359965264]
- FGOで好きなサーヴァントがアビゲイル、北斎、楊貴妃なんだが
- 【悲報】高市有事で日本に同調する国、1つも現れないwwwwwwwwwwwwwww [603416639]
- 自閉症が「んなっしょい」と連呼するお🏡
