ラベル Ruby の投稿を表示しています。 すべての投稿を表示
ラベル Ruby の投稿を表示しています。 すべての投稿を表示

2015年7月29日水曜日

Ruby での加算子

よくある「++」はないので、
hoge += 1
とする。

それどころか、へたに++なんていれると、次の行が文法エラーとなったり、次の行の何かと連結できてしまうと、おかしな挙動になる。
++がダメ、とピンポイントで指摘してくれないので、ハマった。。

2015年3月12日木曜日

gsub! の返り値

str = ""
p str.gsub!("\n","")
p str
str = "A\nB"
p str.gsub!("\n","")

とした場合、それぞれ
nil
""
"AB"
となる。

なので、(必ずしも改行があるわけではないが)改行があった場合に、それを取り除いたものがほしいとして、
hoge = str.gsub!("\n","")
と書くと、
改行があれば、「改行を取り除いた文字列」が変数hogeに入るが、
改行がない場合は、「そのままの文字列」ではなく、「nil」が変数hogeに入ってしまう。

あくまで変数strそのものを参照していけばいいのだが…つい癖で。

または、include? で確認してから使う。

2015年1月18日日曜日

[Ruby] csvデータを読み込み処理して、csvデータ形式で出力。


CSVデータの1行分。
CSVデータの実態はテキストファイル。カンマを目印に分割できる。

※セル内に改行がある場合は、そこで分割されてしまうので、上記の方法では無理。
いろいろ考えはあると思うが、
require 'csv'
を使うやり方がある。

require 'csv'

CSV.foreach(filename) do |row|

end

※空欄は「""」ではなく、「nil」になるので注意。

2015年1月3日土曜日

Ruby メモ

・文字列を囲むのに、
"" 特殊文字(\nとか)を解釈する。
''  特殊文字を解釈しない。

・p オブジェクトの中身を表示。

・コメントの書き方
先頭に#
または、
=begin
(~~~)
=end

・条件文
if ~ then
elsif ~ then (elseif ではない。)
while ~ do
※最後のthen,do は省略可能。
締めは、
end

・繰り返し処理
■ each文
hoge.each { | piyo |
(hoge変数の中身が、順にpiyo変数に入るので、そのpiyo変数に対して繰り返したい処理を書く。)
}

■ for文
for i in 0..5

end
(0〜5まで繰り返す。加算される変数iを使いたい時に用いる)

・正規表現
=~ 正規表現でマッチングを行う時に使う。

・null じゃなくて nil
また条件判断にて、偽として扱われる。

・コマンドラインからのデータ入力
ARGVという配列オブジェクトが受け取る。(ARGV[0])

・メソッド
def メソッド名 (引数)
※引数にはデフォルト値を設定出来る。
返り値は、最後の行(条件文の場合はそれぞれ)が自動的になる。
return で明示した場合は、そこでメソッドが終了する。

・クラスの作成
class クラス名
   def initialize()
end
※クラス名は大文字から始める
※initializeメソッドはJavaでいうコンストラクタ

・変数
@hoge…インスタンス変数。インスタンスごとに割り当てられる。
@@hoge…クラス変数。そのクラスの全てのインスタンスで共有。

・文字を特定文字で分割
コンマ区切りなら、
hoge.split(/,/)

・String変数に文字を追加
@text << "てすと"

・上から実行するので、メソッドを下に書くとエラー

・型を調べる
p hoge.class

・◯◯が含まれているか?
hoge.include?("◯◯")

・変数は、参照渡し(値渡しではない)なので注意。
破壊的操作を行う場合は、必要に応じて値をコピーするような記述をする。
hoge = piyo.dup
など。

・スライス
例えば、「/」と「・」で分割したい場合
split(/[\/・]/)
※「/」の前にはバックスラッシュを入れる。

2014年12月31日水曜日

Ruby のインストール

スクリプトを書くことになり、Rubyを覚えることに。

自宅はWindows7。

以下からダウンロード
http://rubyinstaller.org/downloads/

ダウンロードしたEXEファイルを実行しても、なぜか反応なし。。

ふと思い立って、右クリックから「管理者として実行」したら動いてくれた。