??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产精品久久久久久,成人99免费视频,欧美人狂配大交3d怪物一区http://www.aygfsteel.com/ivanwan/category/2973.html自由的力量,自由的生zR?/description>zh-cnWed, 19 Nov 2014 08:03:11 GMTWed, 19 Nov 2014 08:03:11 GMT60redmine敏捷开发插?/title><link>http://www.aygfsteel.com/ivanwan/archive/2014/11/18/420257.html</link><dc:creator>ivaneeo</dc:creator><author>ivaneeo</author><pubDate>Tue, 18 Nov 2014 10:23:00 GMT</pubDate><guid>http://www.aygfsteel.com/ivanwan/archive/2014/11/18/420257.html</guid><wfw:comment>http://www.aygfsteel.com/ivanwan/comments/420257.html</wfw:comment><comments>http://www.aygfsteel.com/ivanwan/archive/2014/11/18/420257.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ivanwan/comments/commentRss/420257.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ivanwan/services/trackbacks/420257.html</trackback:ping><description><![CDATA[<div>http://redminecrm.com/pages/vmware_image</div><img src ="http://www.aygfsteel.com/ivanwan/aggbug/420257.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ivanwan/" target="_blank">ivaneeo</a> 2014-11-18 18:23 <a href="http://www.aygfsteel.com/ivanwan/archive/2014/11/18/420257.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jruby jdbcq接oraclehttp://www.aygfsteel.com/ivanwan/archive/2009/04/22/266989.htmlivaneeoivaneeoWed, 22 Apr 2009 06:50:00 GMThttp://www.aygfsteel.com/ivanwan/archive/2009/04/22/266989.htmlhttp://www.aygfsteel.com/ivanwan/comments/266989.htmlhttp://www.aygfsteel.com/ivanwan/archive/2009/04/22/266989.html#Feedback0http://www.aygfsteel.com/ivanwan/comments/commentRss/266989.htmlhttp://www.aygfsteel.com/ivanwan/services/trackbacks/266989.htmlrequire 'java'
import 'oracle.jdbc.driver.OracleDriver'

module JavaLang
  include_package "java.lang"
end

module JavaSql
  include_package "java.sql"
end

#JavaLang::Class.forName("oracle.jdbc.driver.OracleDriver").newInstance
##发现如果直接用Class.forName话根本找不到cR看来jruby是预先导入的直接用import CLASS卛_
con =
  JavaSql::DriverManager.getConnection( \
    "jdbc:oracle:thin:@132.228.129.104:1521:ods","ods","ods")
  sql = con.createStatement()

  result = sql.executeQuery("select * from dual")

  while result.next
    puts result.getString(1)
  end



ivaneeo 2009-04-22 14:50 发表评论
]]>
rdoc地址集合http://www.aygfsteel.com/ivanwan/archive/2006/11/20/82341.htmlivaneeoivaneeoMon, 20 Nov 2006 09:44:00 GMThttp://www.aygfsteel.com/ivanwan/archive/2006/11/20/82341.htmlhttp://www.aygfsteel.com/ivanwan/comments/82341.htmlhttp://www.aygfsteel.com/ivanwan/archive/2006/11/20/82341.html#Feedback0http://www.aygfsteel.com/ivanwan/comments/commentRss/82341.htmlhttp://www.aygfsteel.com/ivanwan/services/trackbacks/82341.html    http://www.ruby-doc.org/core/
    代理讉K:http://anonymouse.org/cgi-bin/anon-www.cgi/http://www.ruby-doc.org/core/

    http://www.ruby-doc.org/stdlib/
2.rmagick
    http://studio.imagemagick.org/RMagick/doc/index.html

3.gemjack.com集合的大多数rdoc(推荐!)
    http://gemjack.com/


ivaneeo 2006-11-20 17:44 发表评论
]]>
dbi如何操作blobhttp://www.aygfsteel.com/ivanwan/archive/2006/11/20/82339.htmlivaneeoivaneeoMon, 20 Nov 2006 09:38:00 GMThttp://www.aygfsteel.com/ivanwan/archive/2006/11/20/82339.htmlhttp://www.aygfsteel.com/ivanwan/comments/82339.htmlhttp://www.aygfsteel.com/ivanwan/archive/2006/11/20/82339.html#Feedback0http://www.aygfsteel.com/ivanwan/comments/commentRss/82339.htmlhttp://www.aygfsteel.com/ivanwan/services/trackbacks/82339.htmlrubyq是把它当作字符?但是要经q加?

我们完全可以使用rmagickq个囑Ş库来q行.


代码:
    require 'rubygems'
    require_gem 'rmagick'
    include Magick

    DBI.connect('DBI:Mysql:test_dbo:192.168.0.164', 'mysql', '') { |dbh|
     dbh.execute 'SET NAMES utf8'
       1.upto(13) { |i|
      str = "insert into users(name, pwd, img) values(?,?,?)"
     dbh.prepare(str) { |st|
 jpg = Image.read('1.jpg').first
  st.execute('a', 'b', jpg.to_blob)
  }
 }
}

如果从数据库反响出来,也类?from_blobҎ)



ivaneeo 2006-11-20 17:38 发表评论
]]>
dbi或activerecord操作mysql的中文问?/title><link>http://www.aygfsteel.com/ivanwan/archive/2006/11/20/82256.html</link><dc:creator>ivaneeo</dc:creator><author>ivaneeo</author><pubDate>Mon, 20 Nov 2006 06:28:00 GMT</pubDate><guid>http://www.aygfsteel.com/ivanwan/archive/2006/11/20/82256.html</guid><wfw:comment>http://www.aygfsteel.com/ivanwan/comments/82256.html</wfw:comment><comments>http://www.aygfsteel.com/ivanwan/archive/2006/11/20/82256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ivanwan/comments/commentRss/82256.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ivanwan/services/trackbacks/82256.html</trackback:ping><description><![CDATA[ <span style="font-family: monospace;">首先创徏?我们q里默认~码utf8:<br /><br /></span>create table samples (<br /><pre>    id int not null auto_increment,<br />    foo varchar(100) not null,<br />    bar text not null,<br />    primary key (id)<br />) Type=MyISAM CHARACTER SET utf8;<br /><br /><br />q里创徏表类型时要用MyISAMcd,因ؓ只有MyISAMcd才支持完整的utf8.最后设|编码utf8.<br /><br />1.dbi操作数据?br /> 如果你本地编码时gbk的话,首先要默认类Iconvq行转换.<br /> require 'iconv'<br /> def gb2u str<br /> conv = Iconv.new("UTF-8", "GBK")<br /> str = conv.iconv(str)<br /> str << conv.iconv(nil)<br /> conv.close<br /><br /> str<br /> end<br /><br /> 插入代码:<br /> DBI.connect('DBI:Mysql:test:localhost', 'mysql', '') { |dbh|<br /> dbh.execute 'SET NAMES utf8' #q里要指明代?br /> 1.upto(13) { |i|<br /> st.execute("insert into samples(foo, bar) values('#{gb2u('一')}#{i}', '#{gb2u('?)}')")<br /> }<br /> }<br /><br /><br /><br />2.activerecord<br /> activerecord是对dbi的包?(也更?呵呵!)<br /> 代码:<br /> require 'rubygems'<br /> require_gem 'activerecord' #因ؓ我是gem的安?br /><br /> ActiveRecord::Base.establish_connection(<br /> :adapter => "mysql",<br /> :host => "localhost",<br /> :database => "test",<br /> :username => "mysql",<br /> :password => "",<br /> :encoding => "utf8") #~码只需q里指明<br /><br /> #指明?br /> class Mytab < ActiveRecord::Base<br /> set_table_name 'samples'<br /> end<br /><br /> #插入数据<br /> tab = Mytab.new<br /> tab.foo= gb2u('一')<br /> tab.bar = gb2u('?)<br /> tab.save<br /><br /> #查询数据<br /> data = Mytab.find(:all)<br /> data.each { |line| <br /> puts "['#{line[:id]}', '#{line[:foo]}, '#{line[:bar]}]" <br /> }<br /><br /><br /><br /><br /></pre><img src ="http://www.aygfsteel.com/ivanwan/aggbug/82256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ivanwan/" target="_blank">ivaneeo</a> 2006-11-20 14:28 <a href="http://www.aygfsteel.com/ivanwan/archive/2006/11/20/82256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>rrobots单例?/title><link>http://www.aygfsteel.com/ivanwan/archive/2006/11/18/81878.html</link><dc:creator>ivaneeo</dc:creator><author>ivaneeo</author><pubDate>Fri, 17 Nov 2006 16:33:00 GMT</pubDate><guid>http://www.aygfsteel.com/ivanwan/archive/2006/11/18/81878.html</guid><wfw:comment>http://www.aygfsteel.com/ivanwan/comments/81878.html</wfw:comment><comments>http://www.aygfsteel.com/ivanwan/archive/2006/11/18/81878.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ivanwan/comments/commentRss/81878.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ivanwan/services/trackbacks/81878.html</trackback:ping><description><![CDATA[看rrobots的一个简单的例子:<br /><br />----------------------- code -----------------------<br />require 'robot'<br /><br />class NervousDuck<br />   include Robot<br /><br />  def tick events<br />    turn_radar 1 if time == 0<br />    turn_gun 30 if time < 3<br />    accelerate 1<br />    turn 2<br />    fire 3 unless events['robot_scanned'].empty? <br />  end<br />end<br /><br />----------------------- code -----------------------<br /><br />q里臛_要实现tickҎ.<br /><br />下面是控制robot的一些方法和属?<br /><br />  battlefield_height  #the height of the battlefield<br />  battlefield_width   #the width of the battlefield<br />  energy              #your remaining energy (if this drops below 0 you are dead)<br />  gun_heading         #the heading of your gun, 0 pointing east, 90 pointing <br />                      #north, 180 pointing west, 270 pointing south<br />  gun_heat            #your gun heat, if this is above 0 you can't shoot<br />  heading             #your robots heading, 0 pointing east, 90 pointing north,<br />                      #180 pointing west, 270 pointing south<br />  size                #your robots radius, if x <= size you hit the left wall<br />  radar_heading       #the heading of your radar, 0 pointing east, <br />                      #90 pointing north, 180 pointing west, 270 pointing south<br />  time                #ticks since match start<br />  speed               #your speed (-8/8)<br />  x                   #your x coordinate, 0...battlefield_width<br />  y                   #your y coordinate, 0...battlefield_height<br />  accelerate(param)   #accelerate (max speed is 8, max accelerate is 1/-1, <br />                      #negativ speed means moving backwards)<br />  stop                #accelerates negativ if moving forward (and vice versa), <br />                      #may take 8 ticks to stop (and you have to call it every tick)<br />  fire(power)         #fires a bullet in the direction of your gun, <br />                      #power is 0.1 - 3, this power will heat your gun<br />  turn(degrees)       #turns the robot (and the gun and the radar), <br />                      #max 10 degrees per tick<br />  turn_gun(degrees)   #turns the gun (and the radar), max 30 degrees per tick<br />  turn_radar(degrees) #turns the radar, max 60 degrees per tick<br />  dead                #true if you are dead<br />  say(msg)            #shows msg above the robot on screen<br />  broadcast(msg)      #broadcasts msg to all bots (they recieve 'broadcasts'<br />                      #events with the msg and rough direction)<br /><br /><img src ="http://www.aygfsteel.com/ivanwan/aggbug/81878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ivanwan/" target="_blank">ivaneeo</a> 2006-11-18 00:33 <a href="http://www.aygfsteel.com/ivanwan/archive/2006/11/18/81878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>rubygems几个单用方?/title><link>http://www.aygfsteel.com/ivanwan/archive/2006/11/07/79699.html</link><dc:creator>ivaneeo</dc:creator><author>ivaneeo</author><pubDate>Tue, 07 Nov 2006 13:12:00 GMT</pubDate><guid>http://www.aygfsteel.com/ivanwan/archive/2006/11/07/79699.html</guid><wfw:comment>http://www.aygfsteel.com/ivanwan/comments/79699.html</wfw:comment><comments>http://www.aygfsteel.com/ivanwan/archive/2006/11/07/79699.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ivanwan/comments/commentRss/79699.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ivanwan/services/trackbacks/79699.html</trackback:ping><description><![CDATA[ <pre> <code>1。gem query --remote # shortcut: gem q -R<br />#列出所有包<br />2。gem query --remote --name-matches doom # shortcut: gem q -R -n doom<br />#列出所有名字匹配的?br />3。gem install --remote progressbar # shortcut: gem i -r progressbar<br />#安装指定名字的包?br />gem ins -r progressbar --version '> 0.0.1' #q里可以匚w版本<br />4。gem specification progressbar # shortcut: gem spec progressbar<br />#查看安装q的指定包详l信?br />5?code>gem uninstall progressbar<br />#卸蝲?br />6。gem query --local # shortcut: 'gem q -L'<br />#列出所有本地安装过的包<br />7?code>gem ins rake<br />#在本地安装,如果没有q程安装<br />8?code>gem list -b ^C<br />#列出所有以C开头的?br />9?code>gem_server<br />开启rdoc服务。可以查看安装包的rdoc</code></code></code></code></code> </pre> <img src ="http://www.aygfsteel.com/ivanwan/aggbug/79699.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ivanwan/" target="_blank">ivaneeo</a> 2006-11-07 21:12 <a href="http://www.aygfsteel.com/ivanwan/archive/2006/11/07/79699.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ruby code example(14)http://www.aygfsteel.com/ivanwan/archive/2006/09/12/69187.htmlivaneeoivaneeoTue, 12 Sep 2006 08:33:00 GMThttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69187.htmlhttp://www.aygfsteel.com/ivanwan/comments/69187.htmlhttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69187.html#Feedback0http://www.aygfsteel.com/ivanwan/comments/commentRss/69187.htmlhttp://www.aygfsteel.com/ivanwan/services/trackbacks/69187.html    include Comparable   ##include?code>extend有什么不同?

                                     ##include负责?code>module插入到类(模块)中,q样p以函数的形式来调用方法;?code>extend负责?code>module插入到对?实例)中,q样添加了ҎҎ?br />
    @@plays = 0            ##cd量,必须初始?br />    attr_reader :name, :artist, :duration   ##分别为@name,@artist,@duration讄可读的属?br />    attr_writer :duration                           ##对@duration讄可写的属?br />
   
    def initialize(name, artist, duration)
@name = name
@artist = artist
@duration = duration

@plays = 0 ##对象变量
end

def to_s
"Song: #@name--#@artist (#@duration)"
end

def name ##函数式的公开所有变?br /> @name
end
def artist
@artist
end
def duration
@duration
end




ivaneeo 2006-09-12 16:33 发表评论
]]>
ruby code example(13)http://www.aygfsteel.com/ivanwan/archive/2006/09/12/69180.htmlivaneeoivaneeoTue, 12 Sep 2006 08:07:00 GMThttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69180.htmlhttp://www.aygfsteel.com/ivanwan/comments/69180.htmlhttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69180.html#Feedback0http://www.aygfsteel.com/ivanwan/comments/commentRss/69180.htmlhttp://www.aygfsteel.com/ivanwan/services/trackbacks/69180.htmlwhile gets
if /Ruby/
print
end
end

##{同代码

ARGF.each {|line| print line if line =~ /Ruby/ }
##ARGF
##An object providing access to virtual concatenation of files passed as command-line
##arguments or standard input if there are no command-line arguments. A synonym for
##$<.

##{同代码
print ARGF.grep(/Ruby/)


ivaneeo 2006-09-12 16:07 发表评论
]]>
ruby code example(12)http://www.aygfsteel.com/ivanwan/archive/2006/09/12/69178.htmlivaneeoivaneeoTue, 12 Sep 2006 07:59:00 GMThttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69178.htmlhttp://www.aygfsteel.com/ivanwan/comments/69178.htmlhttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69178.html#Feedback0http://www.aygfsteel.com/ivanwan/comments/commentRss/69178.htmlhttp://www.aygfsteel.com/ivanwan/services/trackbacks/69178.html##闭包的常见用?
[ 'cat', 'dog', 'horse' ].each {|name| print name, " " }
5.times { print "*" }
3.upto(6) {|i| print i } ##3..6又一写法
('a'..'e').each {|char| print char }

##输出函数的格式字W串
printf("Number: %5.2f,\nString: %s\n", 1.23, "hello")


ivaneeo 2006-09-12 15:59 发表评论
]]>
ruby code example(11)http://www.aygfsteel.com/ivanwan/archive/2006/09/12/69175.htmlivaneeoivaneeoTue, 12 Sep 2006 07:52:00 GMThttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69175.htmlhttp://www.aygfsteel.com/ivanwan/comments/69175.htmlhttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69175.html#Feedback0http://www.aygfsteel.com/ivanwan/comments/commentRss/69175.htmlhttp://www.aygfsteel.com/ivanwan/services/trackbacks/69175.html#############################################
##闭包的一个用?br /> animals = %w( ant bee cat dog elk ) # create an array
animals.each {|animal| puts animal } # iterate over the contents


#############################################
  def call_block
puts "Start of method"
yield ##执行传入的参?q里?In the block"
yield
puts "End of method"
end

call_block { puts "In the block" }

##############################################


ivaneeo 2006-09-12 15:52 发表评论
]]>
ruby code example(10)http://www.aygfsteel.com/ivanwan/archive/2006/09/12/69173.htmlivaneeoivaneeoTue, 12 Sep 2006 07:49:00 GMThttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69173.htmlhttp://www.aygfsteel.com/ivanwan/comments/69173.htmlhttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69173.html#Feedback0http://www.aygfsteel.com/ivanwan/comments/commentRss/69173.htmlhttp://www.aygfsteel.com/ivanwan/services/trackbacks/69173.html##块的用法
{ puts "Hello" } # this is a block

do ###
club.enroll(person) # and so is this
person.socialize #
end ###




ivaneeo 2006-09-12 15:49 发表评论
]]>
ruby code example(9)http://www.aygfsteel.com/ivanwan/archive/2006/09/12/69168.htmlivaneeoivaneeoTue, 12 Sep 2006 07:29:00 GMThttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69168.htmlhttp://www.aygfsteel.com/ivanwan/comments/69168.htmlhttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69168.html#Feedback0http://www.aygfsteel.com/ivanwan/comments/commentRss/69168.htmlhttp://www.aygfsteel.com/ivanwan/services/trackbacks/69168.htmlline = "abc"
if line =~ /Perl|Python/ ##匚w正则表达?br /> puts "Scripting language mentioned: #{line}"
end


line.sub(/Perl/, 'Ruby') # replace first 'Perl' with 'Ruby'
line.gsub(/Python/, 'Ruby') # replace every 'Python' with 'Ruby'



ivaneeo 2006-09-12 15:29 发表评论
]]>
ruby code example(8)http://www.aygfsteel.com/ivanwan/archive/2006/09/12/69165.htmlivaneeoivaneeoTue, 12 Sep 2006 07:22:00 GMThttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69165.htmlhttp://www.aygfsteel.com/ivanwan/comments/69165.htmlhttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69165.html#Feedback0http://www.aygfsteel.com/ivanwan/comments/commentRss/69165.htmlhttp://www.aygfsteel.com/ivanwan/services/trackbacks/69165.html histogram = Hash.new(0) ##lhash表设|默然gؓ0
histogram['key1']
histogram['key1'] = histogram['key1'] + 1
histogram['key1']

######################################
##gets 从命令行出入的文件名得到的文件的每一行文本?br />while line = gets
puts line.downcase ##downcase全部转换成小?br />end


ivaneeo 2006-09-12 15:22 发表评论
]]>
ruby code example(7)http://www.aygfsteel.com/ivanwan/archive/2006/09/12/69162.htmlivaneeoivaneeoTue, 12 Sep 2006 07:10:00 GMThttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69162.htmlhttp://www.aygfsteel.com/ivanwan/comments/69162.htmlhttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69162.html#Feedback0http://www.aygfsteel.com/ivanwan/comments/commentRss/69162.htmlhttp://www.aygfsteel.com/ivanwan/services/trackbacks/69162.html##数组
a = [ 'ant', 'bee', 'cat', 'dog', 'elk' ]
a[0]
a[3]
# this is the same:
a = %w{ ant bee cat dog elk }
a[0]
a[3]

##hash?br /> inst_section = {
'cello' => 'string',
'clarinet' => 'woodwind',
'drum' => 'percussion',
'oboe' => 'woodwind',
'trumpet' => 'brass',
'violin' => 'string'
}

inst_section['oboe']
inst_section['cello']
inst_section['bassoon']


ivaneeo 2006-09-12 15:10 发表评论
]]>
ruby code example(6)http://www.aygfsteel.com/ivanwan/archive/2006/09/12/69160.htmlivaneeoivaneeoTue, 12 Sep 2006 07:07:00 GMThttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69160.htmlhttp://www.aygfsteel.com/ivanwan/comments/69160.htmlhttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69160.html#Feedback0http://www.aygfsteel.com/ivanwan/comments/commentRss/69160.htmlhttp://www.aygfsteel.com/ivanwan/services/trackbacks/69160.html a = [ 1, 'cat', 3.14 ] # array with three elements
# access the first element
a[0]
# set the third element
a[2] = nil
# dump out the array
a

ivaneeo 2006-09-12 15:07 发表评论
]]>
ruby code example(5)http://www.aygfsteel.com/ivanwan/archive/2006/09/12/69159.htmlivaneeoivaneeoTue, 12 Sep 2006 07:05:00 GMThttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69159.htmlhttp://www.aygfsteel.com/ivanwan/comments/69159.htmlhttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69159.html#Feedback0http://www.aygfsteel.com/ivanwan/comments/commentRss/69159.htmlhttp://www.aygfsteel.com/ivanwan/services/trackbacks/69159.html def say_goodnight(name)
result = "Good night, #{name}" ##把变量name的值替换进字符?ruby使用#{var}.
return result
end
puts say_goodnight('Pa')
##########################################################

def say_goodnight(name)
result = "Good night, #{name.capitalize}" ##s.capitalize W一个子母变为大?br /> ##s.capitalize!
##Returns a copy of s with the first character converted to uppercase and the remainder to lowercase.
##"fooBar".capitalize # => "Foobar"
return result
end
puts say_goodnight('uncle')
##########################################################

$greeting = "Hello" # $greeting is a global variable
@name = "Prudence" # @name is an instance variable
puts "#$greeting, #@name"

##########################################################
def say_goodnight(name) ##不用使用return语句也可以返?br /> "Good night, #{name}"
end
puts say_goodnight('Ma')



ivaneeo 2006-09-12 15:05 发表评论
]]>
ruby code example(4)http://www.aygfsteel.com/ivanwan/archive/2006/09/12/69156.htmlivaneeoivaneeoTue, 12 Sep 2006 06:53:00 GMThttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69156.htmlhttp://www.aygfsteel.com/ivanwan/comments/69156.htmlhttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69156.html#Feedback0http://www.aygfsteel.com/ivanwan/comments/commentRss/69156.htmlhttp://www.aygfsteel.com/ivanwan/services/trackbacks/69156.html number = -123 #数字都有MathcȝҎ
 number = number.abs

ivaneeo 2006-09-12 14:53 发表评论
]]>
ruby code example(3)http://www.aygfsteel.com/ivanwan/archive/2006/09/12/69155.htmlivaneeoivaneeoTue, 12 Sep 2006 06:50:00 GMThttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69155.htmlhttp://www.aygfsteel.com/ivanwan/comments/69155.htmlhttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69155.html#Feedback0http://www.aygfsteel.com/ivanwan/comments/commentRss/69155.htmlhttp://www.aygfsteel.com/ivanwan/services/trackbacks/69155.html song = 1
sam = ""
def sam.play(a) #定义Ҏ
"duh dum, da dum de dum ..."
end
  "gin joint".length	#所有都是以Object为root
"Rick".index("c")
-1942.abs
sam.play(song)


ivaneeo 2006-09-12 14:50 发表评论
]]>
ruby code example(2)http://www.aygfsteel.com/ivanwan/archive/2006/09/12/69148.htmlivaneeoivaneeoTue, 12 Sep 2006 06:29:00 GMThttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69148.htmlhttp://www.aygfsteel.com/ivanwan/comments/69148.htmlhttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69148.html#Feedback0http://www.aygfsteel.com/ivanwan/comments/commentRss/69148.htmlhttp://www.aygfsteel.com/ivanwan/services/trackbacks/69148.htmlclass Song
def initialize(a) #构造函?br />end
end
song1 = Song.new("Ruby Tuesday")
song2 = Song.new("Enveloped in Python")
# and so on


ivaneeo 2006-09-12 14:29 发表评论
]]>
ruby code example(1)http://www.aygfsteel.com/ivanwan/archive/2006/09/12/69147.htmlivaneeoivaneeoTue, 12 Sep 2006 06:27:00 GMThttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69147.htmlhttp://www.aygfsteel.com/ivanwan/comments/69147.htmlhttp://www.aygfsteel.com/ivanwan/archive/2006/09/12/69147.html#Feedback0http://www.aygfsteel.com/ivanwan/comments/commentRss/69147.htmlhttp://www.aygfsteel.com/ivanwan/services/trackbacks/69147.html3.times { puts "Hello!" }

i.times {| i| ...}
Iterates the block i times. ##q代一个闭包i?br />

ivaneeo 2006-09-12 14:27 发表评论
]]>
Martin FowlerQ闭?/title><link>http://www.aygfsteel.com/ivanwan/archive/2005/08/23/10811.html</link><dc:creator>ivaneeo</dc:creator><author>ivaneeo</author><pubDate>Tue, 23 Aug 2005 09:06:00 GMT</pubDate><guid>http://www.aygfsteel.com/ivanwan/archive/2005/08/23/10811.html</guid><wfw:comment>http://www.aygfsteel.com/ivanwan/comments/10811.html</wfw:comment><comments>http://www.aygfsteel.com/ivanwan/archive/2005/08/23/10811.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ivanwan/comments/commentRss/10811.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ivanwan/services/trackbacks/10811.html</trackback:ping><description><![CDATA[ 随着Z对动态语a兴趣的日益浓厚,来多的h都遇C闭包QClosures Q和或块QBlocksQ等概念。有着C/C++/Java/C#{语a背景的h因ؓq些语言本n没有闭包q个概念Q所以可能不太了解闭包。本文将单的介绍一下闭包的概念Q那些有大量支持闭包语言~程l验的h也许觉得本文不会太有意思? <P>    闭包的概念已l提出很长时间了。我W一ơ碰到这它是在smalltalk中,那时候还叫做块(blocksQ。Lisp语言中用的很多。Ruby中也有同L功能Q这也是Ruby用户喜欢Ruby的一个原因?/P> <P>    本质上来_一个闭包是一块代码,它们能作为参C递给一个方法调用。我通过一个简单的例子来阐q这个观炏V假设我们有一个包含一些雇员对象的列表Q然后我惛_位ؓl理的员工,q样的员工可以通过IsManager判断。在C#里,我们可能会写Z面类似的代码Q?/P><PRE> public static IList Managers(IList emps) { IList result = new ArrayList(); foreach(Employee e in emps) if (e.IsManager) result.Add(e); return result; } </PRE> <P>    在一U支持闭包的语言中,比如RubyQ我们可以这样写Q?/P><PRE> def managers(emps) return emps.select {|e| e.isManager} end </PRE> <P>    select是Ruby中定义的集合l构中的一个方法,它接受一个blockQ也是闭包Q作Z个参数。在Ruby中,闭包写在一对大括号中(不止q一U方法,另一Uؓdo .. endQ。如果这个块也接受参敎ͼ你可以将q些参数攑ֈ两个竖线之间。selectҎ循环q代l定的数l,Ҏ个元素执行给定的blockQ然后将每次执行blockq回true的元素组成一个新的数l再q回?/P> <P>    现在Q如果你是CE序员你也许要想Q通过函数指针也可以实玎ͼ如果你是JAVAE序员,你可能回x可以用匿名内cL实现Q而一个C#者则会想C理(delegateQ。这些机制和闭包cMQ但是它们和闭包之间有两个明昑־区别?/P> <P>    W一个是形式上的不同QThe first one is a formal differenceQ。闭包可以引用它定义时候可见的变量。看看下面的ҎQ?/P><PRE>def highPaid(emps) threshold = 150 return emps.select {|e| e.salary > threshold} end </PRE> <P>    注意select的block代码中引用了在包含它的方法中的局部变量,而其它不支持真正闭包的语a使用其它Ҏ辑ֈcM功能的方法则不能q样做。闭包还允许你做更有的事情Q比如下面方法:</P><PRE>def paidMore(amount) return Proc.new {|e| e.salary > amount} end </PRE> <P>    q个Ҏq回一个闭包,实际上它q回一个依赖于传给它的参数的闭包。我可以用一个参数创Z个这LҎQ然后再把它赋给另一个变量?/P><PRE>highPaid = paidMore(150) </PRE> <P>    变量 <CODE><FONT face=新宋?highPaid</FONT></CODE> 包含了一D代码(在Ruby中是一个Proc对象Q,q段代码判断一个对象的salary属性是否大?50。我们可以这样用这个方法:</P><PRE>john = Employee.new john.salary = 200 print highPaid.call(john) </PRE> <P>      表达?CODE><FONT face=新宋?highPaid.call(john)</FONT></CODE>调用我之前定义的代码Q这时候此代码中的amount已经在创Ҏ的时候绑定ؓ150。即使现在我执行print 的时候,150已经不在它的范围内了Q但是amount?50之间的绑定依然存在?/P> <P>    所以,闭包的第一个关键点是闭包是一D代码加上和定义它的环境之间的绑定(they are a block of code plus the bindings to the environment they came fromQ。这是闭包和函数指针{其它相似技术的不同点(java匿名内类可以讉K局部变量,但是只有当这些内cLfinal的时候才行)?/P> <P>    W二个不同点不是定义形式的不同,但是也同样重要。(The second difference is less of a defined formal difference, but is just as important, if not more so in practiceQ。支持闭包的语言允许你用很少的语法去定义一个闭包,管q点可能不是很重要的一点,但我怿q点是至关重要的Q这是得h们能很自然的使用闭包的关键点。看看LispQSmalltalk和RubyQ闭包遍布各处-比其它语a中类似的使用多很多。绑定局部变量是它的特点之一Q但我想最大的原因是用闭包的语法和符号非常简单和清楚?/P> <P>    一个很好的相关例子是从SmalltalkE序员到JAVAE序员,开始时很多人,包括我,试验性的在Smalltalk中用闭包的地方在Java中用匿名内cL实现。但l果使得代码变得混ؕ隄Q所以我们不得不攑ּ?/P> <P>   我在Rubyl常使用闭包Q但我不打算创徏Proc对象Q然后传来传厅R大多数旉我用闭包来处理前面我提到的select{基于集合对象的Ҏ。闭包另一个重要用途是'execute around method'Q比如处理一个文Ӟ</P><PRE>File.open(filename) {|f| doSomethingWithFile(f)} </PRE> <P>   q里openҎ打开一个文Ӟ然后执行l定的blockQ然后关闭它。这样处理非常方便,其是对事务Q要求commit或者rollbackQ,或者其它的你需要在处理l束时候作一些收֤理的事情。我在我的xml文档转换中广泛用这个优炏V?/P> <P>   闭包的这些用法显然远不如用Lisp语言的h遇到的多Q即使我Q在使用没有闭包支持的语a的时候,也会惛_q些东西。闭包就像一些你W一D到觉得不怎么L东西Q但你很快就会喜Ƣ上它们?/P><img src ="http://www.aygfsteel.com/ivanwan/aggbug/10811.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ivanwan/" target="_blank">ivaneeo</a> 2005-08-23 17:06 <a href="http://www.aygfsteel.com/ivanwan/archive/2005/08/23/10811.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ȫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʲ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʯׯ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ĭ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʼ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͨ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͼ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ǩ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">³ľ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>