`The rubyist'【えぬ】の日記

|

2009-04-09

Foo#bar= 形式メソッドには引数を一つしか与えられない Foo#bar= 形式メソッドには引数を一つしか与えられない - `The rubyist'【えぬ】の日記 を含むブックマーク はてなブックマーク - Foo#bar= 形式メソッドには引数を一つしか与えられない - `The rubyist'【えぬ】の日記

class A
  def initialize
    @a = []
  end
  def a=(i, j)
    @a[i] = j
  end
end

z = A.new
z.a(100) = 200

-:11: syntax error, unexpected '=', expecting $end
z.a(100) = 200
          ^

Perlのlvalue属性がうらやましいw

2009-03-31

Proc#=== Proc#=== - `The rubyist'【えぬ】の日記 を含むブックマーク はてなブックマーク - Proc#=== - `The rubyist'【えぬ】の日記

昨日ふと「Proc#===」があればcase文で便利だろうなと思ってたら…

ということでサンプル。

a = 1000
case a
 when lambda{|b| b == 1000}
  p "==="
 else
  p "no ==="
end

% ruby -v proc-case
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
"no ==="

% ruby19 -v proc-case
ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux]
"==="

2009-03-06

Symbol, to_sym Symbol, to_sym - `The rubyist'【えぬ】の日記 を含むブックマーク はてなブックマーク - Symbol, to_sym - `The rubyist'【えぬ】の日記

1.8では\0を含むSymbolは作れない。

% ruby -ve 'p "\0zzz".to_sym;'
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
-e:1:in `to_sym': symbol string may not contain `\0' (ArgumentError)
        from -e:1

% ruby -ve 'p :"\0zzz";'
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
-e:1: symbol cannot contain '\0'

1.9ではto_symを使えば作れる。

% ruby19 -ve 'p "\0zzz".to_sym;'
ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux]
:"\x00zzz"

でも\0を含むSymbolリテラルはだめ。

% ruby19 -ve 'p :"\0zzz"'
ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux]
-e:1: symbol cannot contain '\0'

2009-01-31

1.9.1のビルドがparse.cのコンパイルで詰まっていた件 1.9.1のビルドがparse.cのコンパイルで詰まっていた件 - `The rubyist'【えぬ】の日記 を含むブックマーク はてなブックマーク - 1.9.1のビルドがparse.cのコンパイルで詰まっていた件 - `The rubyist'【えぬ】の日記

trunkからビルドしていた頃からこの問題に遭遇し、gcc 4.2では問題がなかったのでそっちを使ってビルドを行うようにしていたが、2chおよびIRCで「optflags=-O3なら問題ない」とあったので試してみる。

以下にconfigure時の最適化フラグの渡し方とparse.cコンパイル時のgccコマンドを記載。

a)だと詰まってしまうが、b)だとコンパイルに成功した。

a) % CFLAGS="-O3 -pipe" ./configure
gcc -O3 -pipe -O2 -g -Wall -Wno-parentheses  -fPIC  -I. -I.ext/include/i686-linux -I./include -I.  -DRUBY_EXPORT   -o parse.o -c parse.c

b) % optflags="-O3 -pipe" ./configure
gcc -O3 -pipe -g -Wall -Wno-parentheses  -fPIC  -I. -I.ext/include/i686-linux -I./include -I.  -DRUBY_EXPORT   -o parse.o -c parse.c

今までこの手のフラグ指定はずっとCFLAGSでやっていたのではまってしまったのか。

ちなみにoptflagsはREADME.jaにも書かれていた。

 * コンパイル・インストール

以下の手順で行ってください.

  1. (snip)

  2. configureを実行してMakefileなどを生成する

     環境によってはデフォルトのCコンパイラ用オプションが付き
     ます.configureオプションで optflags=.. warnflags=.. 等
     で上書きできます.

が、configure --helpしてもoptflagsの単語は一切出てこないので意識していなかった模様…

% ./configure --help

`configure' configures this package to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

(snip)
Some influential environment variables:
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  LIBS        libraries to pass to the linker, e.g. -l<library>
  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
              you have headers in a nonstandard directory <include dir>
  CXX         C++ compiler command
  CXXFLAGS    C++ compiler flags
  CPP         C preprocessor

(snip)

2009-01-30

2chに書き込んだコードはライセンス上取り込めません」? 「2chに書き込んだコードはライセンス上取り込めません」? - `The rubyist'【えぬ】の日記 を含むブックマーク はてなブックマーク - 「2chに書き込んだコードはライセンス上取り込めません」? - `The rubyist'【えぬ】の日記

Rubyについて Part 33

http://pc11.2ch.net/test/read.cgi/tech/1223709050/672-

672 名前:デフォルトの名無しさん[sage] 投稿日:2009/01/29(木) 14:26:24
2chに書き込んだコードはライセンス上取り込めません

676 名前:デフォルトの名無しさん[sage] 投稿日:2009/01/29(木) 15:52:47
>>672
逆に出所を明記して取り込んでもらうのもいいんじゃ?

677 名前:デフォルトの名無しさん[sage] 投稿日:2009/01/29(木) 15:57:42
>>676
ttp://info.2ch.net/kiyaku.html
これとRubyライセンスが合わない

工エエェェ(´д`)ェェエエ工

それはそうと今になってCGIAltの存在を知った_||○ il||li

|