Ruby 初心者スレッド Part 56©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net
2014/12/13(土) 09:29:12.93ID:DLY4IovQ質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で
前スレ
Ruby 初心者スレッド Part 55
http://peace.2ch.net/test/read.cgi/tech/1403361584/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
0756デフォルトの名無しさん
2015/02/19(木) 08:45:11.80ID:oS1fF8P8シングルクォートとか関係ない
せめて2つ上のレスくらい読んでから発言しよう
0757デフォルトの名無しさん
2015/02/19(木) 11:18:05.36ID:iGdP7Vg9reg = /25(?=65)/,
/25(?=65)\d*/,
/(?=65)\d*/
reg.each{|ex|
puts target.match(ex)
}
結果
25
25659565564
659565564
先読みのあとに記述があると
この結果になるのはなぜでしょうか
0758デフォルトの名無しさん
2015/02/19(木) 12:57:30.27ID:fdKBoaCSそのreg3つはそれぞれ以下のような意味だよ
・/25/ただし25まで読み込んだ時点でその先に65が続くもの
・/25\d*/ただし25まで読み込んだ時点でその先に65が続くもの
・/\d*/ただし先頭が65であるもの
先読みした部分は結果には入らないし、読み飛ばされもしない
あとは先読み以外の部分が結果として表示されてる
0759デフォルトの名無しさん
2015/02/19(木) 13:32:07.49ID:iGdP7Vg9結果25で、65が除外されるのは理解できるのですが
/(?=65)\d*/ な場合
65が除外されずに 65....とマッチします
評価として点(・)を用いいます
(?=65)の時点で
25・659565564
25・6595.....
(?=65)の時点で一度65を除外してるが
\dにより 6595が読み込まれるので 65除外のあとから6595がヒットする 2565・95ではなく、25・6595の理由からって意味でしょうか
0760デフォルトの名無しさん
2015/02/19(木) 14:10:36.73ID:00AGhhL10761デフォルトの名無しさん
2015/02/19(木) 14:29:02.05ID:fdKBoaCSたぶん考え方はあってると思うよ
先読みの場合は、点(・)の先に65があることを確認するだけで、点の位置は動かない
なので、その後に\d*とマッチする部分に65が含まれる
だからマッチに使われる(点が進む)ことを除外というのなら、先読みでは除外しないっていうことになると思う
0762デフォルトの名無しさん
2015/02/19(木) 16:18:09.18ID:Q7B3YZ4lほんとセマンティックバージョニングの意味ねえな
パッチアップデートで壊したわけじゃないだけマシか?
マシって何と比べてマシなんだ(自問)
0763デフォルトの名無しさん
2015/02/19(木) 16:20:42.35ID:DC8iLU1Gそのあと同じファイルに、読み込んだ行数分を削除したいのですが、何かいい方法ありませんか?
例えば、
hoge.txt
1.れもん
2.いちご
3.りんご
4.ばなな
5.パイナップル
を2行分読み込んで削除
hoge.txt
1.りんご
2.ばなな
3.パイナップル
0764デフォルトの名無しさん
2015/02/19(木) 16:43:02.17ID:Xd3keHXW0765デフォルトの名無しさん
2015/02/19(木) 16:50:15.33ID:ra0CCNS1各行をリンクや配列にして新たに書くかシークしてまるまるコピーか
0766デフォルトの名無しさん
2015/02/19(木) 17:03:30.07ID:00AGhhL1>構造上前を詰めるのはそのままじゃ無理なのはわかるべ
ってどういうこと?
0767デフォルトの名無しさん
2015/02/19(木) 17:08:06.98ID:ra0CCNS10768デフォルトの名無しさん
2015/02/19(木) 17:17:55.65ID:00AGhhL10769デフォルトの名無しさん
2015/02/19(木) 23:24:09.47ID:/rXoqLFuhttps://ideone.com/pyWQL9
実行例:
$ ruby enum-drop.rb hoge.txt
3.りんご
4.ばなな
5.パイナップル
$
28行目のメソッド Enumerable#drop(n) を利用することがポイント
http://docs.ruby-lang.org/ja/2.2.0/method/Enumerable/i/drop.html
なお Enumerable#drop はリターン値として配列(Array オブジェクト)を返すから、
入力データ(の行数)が膨大になるとメモリ効率が悪くなる
この問題は代わりに Enumerator::Lazy#drop(n) を使うと、行単位にオブジェクトが
生産/消費されるようになるから、メモリ効率を改善できる
http://docs.ruby-lang.org/ja/2.2.0/method/Enumerator=3a=3aLazy/i/drop.html
具体的には、28行目のメソッドチェーンで drop の前に lazy を挿入するだけで終わる:
....(前略).... .each_line.lazy.drop(num). ....(後略)....
ただし Enumerator::Lazy は Ruby 2.0 で追加された組込みモジュールだから、
Ruby 1.8/1.9 で利用するなら enumerable-lazy という Gems パッケージが必要になる
0770デフォルトの名無しさん
2015/02/20(金) 02:35:25.81ID:2YGngXGF0771デフォルトの名無しさん
2015/02/20(金) 02:46:11.83ID:EBONnwDBいったん違うファイルに書いて、
元のファイルを削除してから、renameする方が安全
行1,2,3,4 とあれば、上から順に、1行ずつ処理していく。
行1 → 読み込むだけで、データは捨てる
2 → 同様に捨てる
3 → 書き込む
4 → 書き込む
0772デフォルトの名無しさん
2015/02/20(金) 03:04:50.52ID:h4oRuNjd$ tail -n +3 hoge.txt | sponge hoge.txt
0773デフォルトの名無しさん
2015/02/20(金) 07:53:47.32ID:fEal40kx0774デフォルトの名無しさん
2015/02/20(金) 08:04:39.98ID:Qj8W36XI単に実行するだけのものを定義する時は
def my_func
yield
end
みたいにしたり&blockというような引数を使うことはわかったのですが
open( "aa.txt", "r" ){ |file|
}
のopen関数のような、他の値も引数にもっていて、ブロックも引数を持っているような関数はどうやって作れば良いのでしょうか
もし良ければ教えて下さい
0775デフォルトの名無しさん
2015/02/20(金) 08:11:05.65ID:pk2QnuVc0776デフォルトの名無しさん
2015/02/20(金) 08:26:35.79ID:KoZ8UZGe普通にmy_funcf(普通の引数)にするだけ
ブロック引数は暗黙的に渡るので引数として明示的に宣言する必要はない
0777デフォルトの名無しさん
2015/02/20(金) 09:40:29.75ID:2q5bsCKhありがとうございます。
さっそくためしてみます!
0778デフォルトの名無しさん
2015/02/20(金) 13:47:34.06ID:NRgYnesQPythonスレになぜかRubyコード投下してたときも同じだったが
関数化して書くのならちゃんとFile.closeするかcloseが必要ないようにしなよ
再利用したときにハマるよ
0779デフォルトの名無しさん
2015/02/20(金) 17:58:04.38ID:NOsWQdQaなんか変な動きするなーって思ってたらこれが原因だったわ
ためになった
0780769
2015/02/20(金) 19:50:56.52ID:8OUkX7Zl指摘ありがとん
ということで、訂正してみた
https://ideone.com/0IemVC
0781デフォルトの名無しさん
2015/02/21(土) 11:19:24.57ID:zv91iaBv# CR・CRLF 改行を、LF 改行に置き換える
str = str_ary[0].encode(:universal_newline => true)
str.each_line do |line|
end
漏れはこんな風に、File.read で、
1行ずつ処理しているが、なぜ、File.open を使うの?
0782デフォルトの名無しさん
2015/02/21(土) 11:57:28.42ID:YnThFa9Sメモリ所要量がファイルサイズに依存しないとか
小っさい小っさいファイルしか使わないんなら気にしなくていいよ
0783デフォルトの名無しさん
2015/02/21(土) 15:44:56.37ID:K/x//vvW0784デフォルトの名無しさん
2015/02/21(土) 16:20:01.62ID:kawK2KK0そういうのは分割しろとは思うがDBに入れるべきかといわれるとそうじゃないと思う
0785デフォルトの名無しさん
2015/02/21(土) 16:37:36.72ID:1ts2mUR/この程度の用事にメモリ効率とか考える方が時間の無駄
いまある用事に対してできることを最小限の労力でやるのが一番
「こういう用事もあるかも」を考えて設計するのは愚の骨頂、とDHHあたりも言ってた気がする
0786デフォルトの名無しさん
2015/02/21(土) 17:05:47.11ID:T2DgAzdTRuby以前にコマンドやそういったものに関しても初心者で、このVpkツールをインストールするだけで一週間ほどかかりました…
VPKファイルフォーマットのパーサー
https://github.com/kimoto/vpk
本来Linux用に作られたものらしいのですが、Macでも使用できるとツールの作者が書いていました
まずVPKファイルの生成よりも展開のほうが簡単かと思い、試しにデスクトップにVPKファイルを置いて
require 'vpk'を書いてエンターを押すと-bash: require: command not foundと出ました
これは別に入力する必要のないものなのでしょうか?
続いてVPK::VPKFile.new("./path_to.vpk").extract_to("./")をやってみましたが
MacName:Desktop UserName$ VPK::VPKFile.new("./Users/UserName/Desktop/test.vpk ")を実行すると
-bash: syntax error near unexpected token `" /Users/UserName/Desktop/test.vpk "'と出て駄目でした
ちなみに、このツールを作った人は日本人でどのように使うかも日本語で説明しています
VPKファイルの展開
require 'vpk'
vpk = VPK::VPKFile.new("./VPKのパス.vpk")
vpk.extract_to("./どこに解凍するか")
VPKファイルをディレクトリから生成する
require 'vpk'
vpk = VPK::VPKFile.archive("./ディレクトリのパス")
vpk.write_to("./生成後のVPKのパス")
ここまで書かれていてまだ理解できません…誰か馬鹿にも分かるように説明して下さるかたいらっしゃいませんか…
0787デフォルトの名無しさん
2015/02/21(土) 17:28:20.44ID:sa43Zcnrrequire 'vpk'
VPK::VPKFile.new(ARGV[0]).extract_to("./")
と書いたファイルをvpktest.rbって名前でデスクトップに保存したらターミナルを起動して
$ cd Desktop
$ ruby vpktest.rb test.vpk
とかする(もちろんtest.vpkがDesktopにあるのが前提)
できればRubyとBashの入門書を一冊ずつ入手して勉強したほうがいい
0788デフォルトの名無しさん
2015/02/21(土) 17:31:41.15ID:sa43ZcnrRubyスクリプト書かなくてもターミナルから次でいけるらいし
$ vpk -x ~/Desktop/test.vpk
0789デフォルトの名無しさん
2015/02/21(土) 18:09:59.96ID:T2DgAzdT$ cd Desktop
$ ruby vpktest.rb test.vpk
をするとvpktest.rb:1: syntax error, unexpected $undefined, expecting '}'
{\rtf1\ansi\ansicpg932\cocoartf1187\cocoasubrtf400
^
と出ました
$ vpk -x ~/Desktop/test.vpkのほうは
/Library/Ruby/Gems/1.8/gems/vpk-0.0.2/lib/vpk.rb:162:in `extract_to': undefined method `write' for File:Class (NoMethodError)
from /Library/Ruby/Gems/1.8/gems/vpk-0.0.2/lib/vpk.rb:156:in `each'
from /Library/Ruby/Gems/1.8/gems/vpk-0.0.2/lib/vpk.rb:156:in `extract_to'
from /Library/Ruby/Gems/1.8/gems/vpk-0.0.2/bin/vpk:40
from /usr/bin/vpk:23:in `load'
from /usr/bin/vpk:23
これは成功してたのでしょうか…!? しかし展開後のフォルダのようなものはデスクトップに見当たりませんでした
787さんがおっしゃるように、最初に本を買って勉強しようと思います
それでも分からなかったらまた質問しにきます
ありがとうございました
0790デフォルトの名無しさん
2015/02/21(土) 18:50:52.11ID:lQiGN8keパスの概念が分かってないようだから
gemを使って入れたらいいのでは?
$ sudo gem install vpk
// $ gem install vpk
$ mkdir -p ~/tmp/vpktest
$ cd ~/tmp/vpktest
$ mkdir hoge
$ touch hoge/testfile_{01..5}.txt
$ ls hoge
testfile_01.txt testfile_02.txt testfile_03.txt testfile_04.txt testfile_05.txt
$ vpk -c hoge
compressed hoge -> hoge.vpk
$ mkdir hoge_out && cd hoge_out
$ vpk -x ../hoge.vpk
extracted!: ../hoge.vpk
$ sudo gem uninstall vpk
$ gem uninstall vpk
0791デフォルトの名無しさん
2015/02/21(土) 19:01:34.99ID:sa43Zcnrそれはおそらくライブラリ側でtest.vpkに対応できなくてエラーを吐いてる
そのライブラリのリリース後にフォーマットが変更されたりしてない?
test.vpkか他のvpkファイルをうpしてもらえれば調べてみるけど
0792デフォルトの名無しさん
2015/02/21(土) 19:21:53.03ID:T2DgAzdTありがとうございます!
vpkツールのインストールはgemを使って入れました、後は教えてもらった通りにやってみましたが未知の世界すぎて…
MacName:~ UserName$ mkdir -p ~/tmp/vpktest
MacName:~ UserName$ cd ~tmp/vpktest
-bash: cd: ~tmp/vpktest: No such file or directory
MacName:~ UserName$ mkdir hoge
MacName:~ UserName$ touch hoge/testfile_{01..5}.txt
MacName:~ UserName$ ls hoge
testfile_1.txt testfile_2.txt testfile_3.txt testfile_4.txt testfile_5.txt
MacName:~UserName$ vpk -c hoge
compressed hoge -> hoge.vpk
/Library/Ruby/Gems/1.8/gems/vpk-0.0.2/lib/vpk.rb:178:in `archive': undefined method `binread' for File:Class (NoMethodError)
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/find.rb:39:in `find'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/find.rb:38:in `catch'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/find.rb:38:in `find'
from /Library/Ruby/Gems/1.8/gems/vpk-0.0.2/lib/vpk.rb:174:in `archive'
from /Library/Ruby/Gems/1.8/gems/vpk-0.0.2/bin/vpk:31
from /usr/bin/vpk:23:in `load'
from /usr/bin/vpk:23
0793デフォルトの名無しさん
2015/02/21(土) 19:27:58.61ID:T2DgAzdTMacName:~ UserName$ mkdir hoge_out && cd hoge_out
MacName:hoge_out UserName$ vpk -x ../hoge.vpk
not found specified file: ../hoge.vpk
MacName:hoge_out UserName$ vpk -x ../hoge.vpk
not found specified file: ../hoge.vpk
MacName:hoge_out UserName$ extracted!: ../hoge.vpk
-bash: : unrecognized history modifier
この文字列を保存しておいて、後でゆっくりどういうことか調べてみようと思います
>>791
ライブラリのリリース後にフォーマットが変更というのがよく分かりませんでした…すみません
このVPKツール自体2012年あたりに作られたものみたいなので、バージョンが古くて対応していないということもあるのかもしれません
ファイルはこれです
元々はvocalizev8.vpkというL4D2というゲーム用ファイルを、分かりやすいようにtest.vpkに名前だけ変えたものです
http://www1.axfc.net/u/3416997
0794デフォルトの名無しさん
2015/02/21(土) 19:50:06.41ID:sa43Zcnrうpしてもらったファイルは問題なく解凍できるみたい
RubyよりもBashの使い方勉強したほうがいいと思う
Amazonでシェルスクリプトで検索するとそれ系の本が出てくる
$ ls
test.vpk test.vpk.zip
$ vpk -x test.vpk
extracted!: test.vpk
$ ls
addonimage.jpg addoninfo.txt scripts test.vpk test.vpk.zip
$ irb
irb(main):001:0> require 'vpk'
=> true
irb(main):002:0> VPK::VPKFile.new('./test.vpk').extract_to('testdir')
[Ctrl+D]
$ ls testdir
addonimage.jpg addoninfo.txt scripts
0795デフォルトの名無しさん
2015/02/21(土) 20:08:10.84ID:T2DgAzdTわざわざ試してくれたんですか…ありがとうございます
Bashを先に学んだ方がいいのですね、頑張って勉強します
他の方も親切に教えてくださってありがとうございました
0796デフォルトの名無しさん
2015/02/21(土) 21:00:28.05ID:sa43Zcnr勉強するなら手始めにこことかよさそう(ぐぐったら出てきた)
http://www.pxt.jp/ja/diary/article/292/
がんばってねー
0797デフォルトの名無しさん
2015/02/21(土) 23:01:02.82ID:sa43Zcnr>>792でFile.binread(Ruby1.9から)ってメソッドがないって言われてるので
Rubyのバージョン上げたらあっさり動くかも
0798デフォルトの名無しさん
2015/02/22(日) 04:25:07.65ID:HpFGsXnKやコマンドの基本を学ぶ
端末で、pwd(positioning working directory)コマンドを実行すると、
今自分がいる(着目している)ディレクトリ(フォルダ)を表示する
端末を開くとたいてい、そのユーザのホームディレクトリから始まる
ディレクトリのパスが、~/ (チルダ)から始まっていたら、
それはそのユーザのホームディレクトリと同じ。
Linuxでは、/home/ユーザ名/ と同じ
パスには、/ (root)から始まる絶対パスと、相対パスがある
./ は相対パスで今自分がいるディレクトリ
../ は相対パスで今自分がいるディレクトリの親ディレクトリ(1階層上)
cd を使うと、今自分がいる場所を変えられる(移動できる)
コマンドを実行する際は、半角空白区切りで、
コマンド名 -オプション コマンドの引数
オプションは、- が付くことが多い。
コマンドの引数の内容に、半角空白を使っているが、
別個の引数と解釈されたくないのなら、
ダブル・シングルクォーテーションで引数を囲むと、
1つの引数とみなされる
"a b c", 'a b c'
たのしいRuby、2013、第4版を読む
0799デフォルトの名無しさん
2015/02/22(日) 08:22:39.59ID:4QR1V68p\bは単語境界を指しており、\wと\Wの隙間であると説明がありました。
\wは[a-zA-Z09_] \Wは[^a-zA-Z09_] なので\Wに\sが含まれます。
ニュアンスとして隙間は\sであるとの表現かな?とも思うのですが
そうであれば\bは\sの変種,何がどう違うのかピンときませんでした
string = "j abc C"
\s(abc)\s
\b(abc)\b の使い方で
「」abc「」 注「」は空白表現
abc
の結果が出ました。
1)\bは\sの「」を抜いたもの,それが「」とabcの隙間って意味でしょうか?
「」・abc → ・が\bであり
「」abc → 「」が\s
であるって理解で正しいでしょうか?
2)\wと\Wの隙間とは 英数字と英数字以外の隙間
では
str = 太郎abc C で実験した結果 .... なし
太郎・abc になるかと期待したのですが・・
疑問
\wと\Wの隙間 ... 単に 前に\s相当の空白があるのが条件であるならば
「\w と \W」 の隙間の表現が理解できません。
0800デフォルトの名無しさん
2015/02/22(日) 08:49:50.33ID:vZEo6Gpi>単語を成す文字、成さない文字の定義はエンコードによって 異なります。
0801デフォルトの名無しさん
2015/02/22(日) 09:29:53.07ID:vZEo6Gpi'@abc{'.match(/\babc\b/) #=> #<MatchData "abc">
\sとはまったくの別物
0802デフォルトの名無しさん
2015/02/22(日) 09:45:25.54ID:JLUSIAF5/^foo$/ における\nの役割が\Wに変わっただけって考えれば理解できないかな?
0803デフォルトの名無しさん
2015/02/22(日) 11:18:14.91ID:E5S/oWCJirb> 'Larry Guido Nocchi'.gsub(/¥b/, '+')
=> "+Larry+ +Guido+ +Nocchi+"
0804デフォルトの名無しさん
2015/02/22(日) 11:43:43.92ID:E5S/oWCJpwdのpはprint
0805デフォルトの名無しさん
2015/02/22(日) 12:41:40.52ID:JLUSIAF5元凶はWikipediaだなw
0806デフォルトの名無しさん
2015/02/22(日) 16:24:18.83ID:PdWqOzTz0807デフォルトの名無しさん
2015/02/22(日) 16:30:10.94ID:tq8+HI3u0808デフォルトの名無しさん
2015/02/23(月) 02:20:47.22ID:OtsoZsN/配布後に(私の支持の下)個々人の要望にかなった変更が行えるようにexeファイル自体は
require_relative 'hoge'
のみから作り、同梱のhoge.rbを自由に編集できるようにしようと思っているのですが、これっておかしいでしょうか? こういう場合、普通だったらこうするよみたいな意見があればお聞かせ願います。
今まで他人に公開するといった機会がなかったのでこの辺のさじ加減がさっぱりわかりません。
0809デフォルトの名無しさん
2015/02/23(月) 02:48:05.91ID:n+U4e1Dx明るくない人向けにWSH(VBS)で配布
0810デフォルトの名無しさん
2015/02/23(月) 05:58:52.55ID:2dcX2lQGRubyなら普通はWebだよ
0811デフォルトの名無しさん
2015/02/23(月) 22:37:30.98ID:gGy05t/rインストールしようとするとこのような↓エラーがでるのですがどう
対処したら良いですか?ちなみにrubyはRuby 2.0.0-p598を使用しています
エラー
C:\Users\rock111\Downloads>gem install nokogiri-1.6.1-x86-mingw32.gem
ERROR: While executing gem ... (Gem::DependencyError)
Unable to resolve dependencies: nokogiri requires mini_portile (~> 0.5.0)
0812デフォルトの名無しさん
2015/02/23(月) 22:52:41.89ID:cY48eAodgem install nokogiriは試した?
gem list mini_portileするとどうなる?
0813デフォルトの名無しさん
2015/02/23(月) 22:58:43.39ID:gGy05t/r指示のとおりやってみました
結果は以下のようになりました
C:\Users\rock111\Downloads>gem install nokogiri
ERROR: While executing gem ... (Gem::DependencyError)
Unable to resolve dependencies: nokogiri requires mini_portile (~> 0.5.0)
C:\Users\rock111\Downloads>gem list mini_portile
*** LOCAL GEMS ***
0814デフォルトの名無しさん
2015/02/23(月) 23:15:26.57ID:8Nm5wO4G0815デフォルトの名無しさん
2015/02/23(月) 23:42:06.22ID:cY48eAodgem install mini_portileしたら
https://rubygems.org/downloads/nokogiri-1.6.6.2-x86-mingw32.gem
をダウンロードして
gem install --local nokogiri-1.6.1-x86-mingw32.gem
それでうまくいかなかったらちょっとわからない
0816デフォルトの名無しさん
2015/02/23(月) 23:43:40.34ID:cY48eAodgem install --local nokogiri-1.6.6.2-x86-mingw32.gem
要は落としてきたgemファイルのパスを指定して
0817デフォルトの名無しさん
2015/02/23(月) 23:50:36.48ID:gGy05t/rこういう結果になりました。アドバイスありがとうございました
後は自分で考えて見ます。。。
C:\Users\rock111\Downloads>gem install mini_portile
ERROR: Could not find a valid gem 'mini_portile' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect retur
ned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (
https://rubygems.org/latest_specs.4.8.gz)
C:\Users\rock111\Downloads>gem install --local nokogiri-1.6.6.2-x86-mingw32.gem
ERROR: While executing gem ... (Gem::DependencyError)
Unable to resolve dependencies: nokogiri requires mini_portile (~> 0.6.0)
0818デフォルトの名無しさん
2015/02/23(月) 23:56:49.59ID:cY48eAodhttps://gist.github.com/luislavena/f064211759ee0f806c88#installing-using-update-packages-new
0819デフォルトの名無しさん
2015/02/24(火) 04:55:39.99ID:hwXyjfLaary[2][3] = [1, 2]
上なら突然でも設定できるのだが、
突然に下のようにすると、エラーで追加できない
ary[2][3] << [1, 2]
ary[2][i]で、iが5, 10など突然に、
ランダムなインデックスに、
次々と追加していくには、どうするの?
設定ではなく、iが同じ場合には、追加していきたい
0820819
2015/02/24(火) 05:20:13.18ID:hwXyjfLaary = []; ary[2] = []
いったん、空配列で初期化した後なら、追加できる
ary[2][3] = []
ary[2][3] << [1, 2]
ary[2][i]で、iが5, 10など突然に、
ランダムなインデックスに、
次々と追加していくには、どうするの?
最初の1回目だけは、空配列で初期化して、
2回目以降は初期化せずに、追加のみしていきたい
0821デフォルトの名無しさん
2015/02/24(火) 05:36:48.05ID:2T0G4BSR0822デフォルトの名無しさん
2015/02/24(火) 06:48:53.58ID:hwXyjfLattps://paiza.io
print RUBY_VERSION
2.2 になっている
0823819
2015/02/24(火) 07:04:42.78ID:hwXyjfLaary = []; ary[2] = []
いったん空配列で初期化した後なら、追加できる
ary[2][3] = []
ary[2][3] << [1, 2]
一方、初期化する前は、nil だから、<< メソッドを呼べない
つまり、空配列とnilは、異なる扱い
0824デフォルトの名無しさん
2015/02/24(火) 09:33:24.04ID:ztCGtY4P0825デフォルトの名無しさん
2015/02/24(火) 11:04:07.70ID:YPtW8awo0826デフォルトの名無しさん
2015/02/24(火) 11:18:02.66ID:CiqLyyCO0827デフォルトの名無しさん
2015/02/24(火) 11:41:50.94ID:2y9qGJ70届くの楽しみ・・・ しかし絶版本中古しか買えなかったわ 高いよ
0828デフォルトの名無しさん
2015/02/24(火) 20:23:26.10ID:+pjYUFm3初心者におすすめのエディタってありますか?
いまのとこサクラエディタを考えてますが・・・
0829デフォルトの名無しさん
2015/02/24(火) 20:35:47.29ID:wMWkMGk+開発者向けじゃない普通のエディタに比べると複雑に感じるかもしれないが、
操作自体は普通でviやemacsのように熟練を要するものではない
0830デフォルトの名無しさん
2015/02/24(火) 20:36:34.72ID:9OYj7FQ2それがないなら適当にフリーのエディタ(サクラでよい)使ってみて気に入らなきゃ別のを探せばよい
0831デフォルトの名無しさん
2015/02/24(火) 20:38:04.38ID:2T0G4BSR0832デフォルトの名無しさん
2015/02/24(火) 20:39:49.43ID:+pjYUFm3プログラミングはsasとかMQLとかしかやったことないので
自前のエディタないんですよね。
atom使ってみます。ありがとうございます。
0833デフォルトの名無しさん
2015/02/24(火) 20:52:02.57ID:xSG7hOYtどうもありがとうございます。
VBSについて調べてみることにします。
0834デフォルトの名無しさん
2015/02/24(火) 21:01:21.70ID:uqCdmZ4lWindowsでRubyを使い続けたいなら、
あまり新しいものや周りに目を向けずにこういうもんだと思って地道に使うのが吉
0835デフォルトの名無しさん
2015/02/24(火) 21:12:23.56ID:2y9qGJ70emacsるびきち本にお布施払って信者になる道もある
winは茨の道に同感
三ヶ月以内にwin捨ててると思う
どうしてもクローラーのお手軽GUIがいいならmacって道もあるんじゃないの
linuxだと無料だけど・・w
0836デフォルトの名無しさん
2015/02/24(火) 22:22:04.69ID:C9vda/HG技術的負債だし
0837デフォルトの名無しさん
2015/02/25(水) 01:37:03.71ID:e/Qay/4t「-」で挟まれた部分が最小となるような正規表現って書けますでしょうか?
/-\w*?-/だと-12345-にマッチしますが、
-12-にマッチするようなものが欲しいんですけど。
0838デフォルトの名無しさん
2015/02/25(水) 02:08:59.82ID:UWnGWlrp0839デフォルトの名無しさん
2015/02/25(水) 02:32:48.94ID:e/Qay/4tありがとうございます。
.scan(/\d+/).sort_by{|i| i.length}
で代用することにします。
0840デフォルトの名無しさん
2015/02/25(水) 02:47:40.94ID:lwlbnzFN0841デフォルトの名無しさん
2015/02/25(水) 03:05:36.04ID:e/Qay/4tありゃりゃ、確かに。
min_byで十分ですね。
0842デフォルトの名無しさん
2015/02/25(水) 07:45:32.49ID:lwlbnzFN0843デフォルトの名無しさん
2015/02/25(水) 08:24:49.99ID:e/Qay/4tはい、最短のものがいくつかあったときは先の方にあったもので大丈夫です。
0844デフォルトの名無しさん
2015/02/25(水) 08:45:30.40ID:AHECRfewarry = '-12345-12-123-'.scan(reg)
p arry.min
#puts "-#{arry.min}-"
0845デフォルトの名無しさん
2015/02/25(水) 08:55:13.44ID:e/Qay/4t初めに挙げた例が悪くて恐縮なのですが
任意の文字列に対して、ハイフンで挟まれた文字列の長さが最短になるような挙動を期待していたので
これだとちょっとマズいです。
0846デフォルトの名無しさん
2015/02/25(水) 08:55:34.29ID:AHECRfew配列のデータのバラつきを集計できる
0847デフォルトの名無しさん
2015/02/25(水) 08:59:03.50ID:AHECRfew0848819
2015/02/25(水) 09:09:27.71ID:4HjDfertary = []; ary[2] = []
結局、要素がnilなら、nil要素には追加できないため、
空配列で初期化した後に、追加する。
こういうやり方でいいの?
ary[2][3] = [] if !ary[2][3]
ary[2][3] << [1, 2]
>>828
漏れはWin8にも対応しているので、
寺尾さんのTeraPadを使っている
0849デフォルトの名無しさん
2015/02/25(水) 09:18:28.42ID:e/Qay/4tそうですね。
>>841のように目下のところは次のようにすることにしました。
.scan(/\d+/).min_by{|i| i.length}
0850デフォルトの名無しさん
2015/02/25(水) 09:20:57.88ID:KXtTFTSD0851デフォルトの名無しさん
2015/02/25(水) 09:39:45.36ID:g5n/F/bU> true && false
false
> true || false
true
になる理由がわからない
わかる人教えてください
0852デフォルトの名無しさん
2015/02/25(水) 09:42:20.61ID:g5n/F/bU2行目は
> true && false
です
0853デフォルトの名無しさん
2015/02/25(水) 09:46:55.35ID:AHECRfew0854デフォルトの名無しさん
2015/02/25(水) 10:15:06.04ID:4HjDfert0 OR 0 → 0
0 OR 1 → 1
1 OR 0 → 1
1 OR 1 → 1
どちらか一方が真なら、真となる。
結果が偽となるのは、入力がともに偽の場合だけ
0855デフォルトの名無しさん
2015/02/25(水) 10:28:48.23ID:4HjDfert0 AND 0 → 0
0 AND 1 → 0
1 AND 0 → 0
1 AND 1 → 1
どちらか一方が偽なら、偽となる。
結果が真となるのは、入力がともに真の場合だけ
■ このスレッドは過去ログ倉庫に格納されています