ruby便捷进门

系统环境  rhel 6.4

默认安装 ruby 环境

本文参考资料来自网络!

1 交互式进入

终端操作:

--------------------------------------------------------------------------------------------------

[embedded@embedded ~]$ irb
irb(main):001:0> exit
[embedded@embedded ~]$

--------------------------------------------------------------------------------------------------

键入 irb 可以键入 ruby 交互式模式

输入 exit quit ctrl+d可退出该模式

说明一下:

python 交互模式的退出是键入 exit()

--------------------------------------------------------------------------------------------------

[embedded@embedded ~]$ python
Python 2.6.6 (r266:84292, Oct 12 2012, 14:36:13)
[GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
[embedded@embedded ~]$ 

--------------------------------------------------------------------------------------------------

Python 进入是直接键入 python,ruby 直接键入 ruby是进入一个只有输入没有输出的界面,CTRL+C可退出该模式

2 玩玩先

免费的计算器

终端操作:

--------------------------------------------------------------------------------------------------

[embedded@embedded ~]$ irb
irb(main):001:0> 1+2
=> 3
irb(main):002:0> 1-2
=> -1
irb(main):003:0> 1*4
=> 4
irb(main):004:0> 1/3
=> 0
irb(main):005:0> 2/1
=> 2
irb(main):006:0> 2**3
=> 8
irb(main):007:0> Math.sqrt(4)
=> 2.0
irb(main):008:0> Math.sqrt(5)
=> 2.23606797749979
irb(main):009:0> exit
[embedded@embedded ~]$
--------------------------------------------------------------------------------------------------
直接可以操作运算,支持:

"+" "-" "*" "/" "**"乘方 "Math.sqrt(x)"开方

说明,注意开方的函数表达式为 Math.sqrt(x),其中 x 为要开方的数

--------------------------------------------------------------------------------------------------

irb(main):001:0> puts "hello kitty"
hello kitty
=> nil
irb(main):002:0>
--------------------------------------------------------------------------------------------------

说明

python 中用的是 print,python2 的语法和 ruby 一样,python3的话用的是 print ("output xxx")

puts 总是返回 nil,nil 是 ruby 中表示 “决定无值”--(absolutely-positively-nothing value)的方式

3 模块XX角色

RUBY 中,模块提供了两种角色

a 将相同性质的方法聚集在同一“类”下面

b 一个圆点(dot),其标记了消息的接收者

4 定义方法

终端操作

--------------------------------------------------------------------------------------------------

[embedded@embedded ~]$ irb
irb(main):001:0> def outputinfo
irb(main):002:1> puts "today is yesterday's son"
irb(main):003:1> end
=> nil
irb(main):004:0> outputinfo
today is yesterday's son
=> nil
irb(main):005:0> 

--------------------------------------------------------------------------------------------------
说明

def 表示要定义一个其后名声明的方法

end 表示完成了该方法的定义

=> nil 表示 ruby 已经知道了该方法的定义

--------------------------------------------------------------------------------------------------

irb(main):005:0> def outputinfo(name)
irb(main):006:1> puts "today is yesterday's son #{name}"
irb(main):007:1> end
=> nil
irb(main):008:0> outputinfo("yes")
today is yesterday's son yes
=> nil
irb(main):009:0>
--------------------------------------------------------------------------------------------------

irb(main):009:0> def outputinfo(name = "yes")
irb(main):010:1> puts "today is yesterday's son #{name}"
irb(main):011:1> end
=> nil
irb(main):012:0> outputinfo "no"
today is yesterday's son no
=> nil
irb(main):013:0> outputinfo
today is yesterday's son yes
=> nil
irb(main):014:0>
--------------------------------------------------------------------------------------------------

说明

#{name} 表示在某一字符串中插入其它字符串,在大括号里面的字符串将被代替

若括号里面指定了相应字符串,则表示 默认;输出显示的时候若制定,则输出相应,否则,输出默认

--------------------------------------------------------------------------------------------------

irb(main):017:0> def a(name = "sunk")
irb(main):018:1> puts "hello #{name.capitalize}"
irb(main):019:1> end
=> nil
irb(main):020:0> a
hello Sunk
=> nil
irb(main):021:0> 

--------------------------------------------------------------------------------------------------
capitalize方法为将名字的第一个字符大写,这点和 python 差不多

5 玩玩 类

终端操作

创建类 Greeter

--------------------------------------------------------------------------------------------------

[embedded@embedded ~]$ irb
irb(main):001:0> class Greeter
irb(main):002:1>   def initialize(name = "World")
irb(main):003:2>     @name = name
irb(main):004:2>   end
irb(main):005:1>   def say_hi
irb(main):006:2>     puts "Hi #{@name}"
irb(main):007:2>   end
irb(main):008:1>   def say_bye
irb(main):009:2>     puts "Hi #{@name}"
irb(main):010:2>   end
irb(main):011:1> end
=> nil
irb(main):012:0>
--------------------------------------------------------------------------------------------------

说明

@name = name 为类的实例变量,对类中所有的方法-say_hi say_bye 都有效果的!

创建类 Greeter 的实例对象

--------------------------------------------------------------------------------------------------

irb(main):012:0> g = Greeter.new("kang")
=> #<Greeter:0xb774b1cc @name="kang">
irb(main):013:0> g.say_hi
Hi kang
=> nil
irb(main):014:0> g.say_bye
Hi kang
=> nil
irb(main):015:0>

--------------------------------------------------------------------------------------------------

注意,实例对象不能直接访问 name

--------------------------------------------------------------------------------------------------

irb(main):015:0> g.@name
SyntaxError: compile error
(irb):15: syntax error, unexpected tIVAR
    from (irb):15
    from :0
irb(main):016:0>
--------------------------------------------------------------------------------------------------
再玩一下

--------------------------------------------------------------------------------------------------

irb(main):016:0> Greeter.instance_methods
=> ["inspect", "tap", "clone", "public_methods", "__send__", "object_id", "instance_variable_defined?", "equal?", "freeze", "extend", "send", "methods", "hash", "dup", "to_enum", "instance_variables", "eql?", "instance_eval", "id", "say_hi", "singleton_methods",
"taint", "enum_for", "frozen?", "instance_variable_get", "instance_of?", "display", "to_a", "method", "type", "say_bye", "instance_exec", "protected_methods", "==", "===", "instance_variable_set", "kind_of?", "respond_to?", "to_s", "class", "__id__", "tainted?",
"=~", "private_methods", "untaint", "nil?", "is_a?"]
irb(main):017:0> Greeter.instance_methods(false)
=> ["say_hi", "say_bye"]
irb(main):018:0> g.respond_to?("name")
=> false
irb(main):019:0> g.respond_to?("say_hi")
=> true
irb(main):020:0> g.respond_to?("to_s")
=> true
irb(main):021:0>
--------------------------------------------------------------------------------------------------

说明

instance_methods 方法显示当前类的所有方法,包括其父类中定义的方法

以上红色部分为显示当前类中所定义的方法

方法 to_s 是将对象转换为字符串,是任何对象都会有的默认方法

修改类定义

在 RUBY 中,可以多次打开类并且修改之,需要用到的方法为:

attr_accessor

修改之后将应用于在此之后所建立的任何对象包括现存的该类的对象中,其实就是个数据各地儿都更新了,实时而已

通过使用attr_accessor定义了两个方法:

“.name”用来获取name属性值;

“.name=”用来设置namee属性值。

以上操作只能交互单一对象,如多对象,还得用其脚本 .rb

时间: 2024-08-01 03:50:40

ruby便捷进门的相关文章

中国高端大冰箱进门的五道槛

近日,各大论坛频现"大冰箱入户难"这一话题,引得 网友纷纷吐槽"大冰箱"痛点,乃至各界媒体的关注.对此,来自山东济南历下区的董女士颇有体会."大冰箱进门实在是让人头疼不已.从楼道门到电梯门再到家门,就像通关一样,连送货的专业师傅都是绞尽脑汁,最后不得不把新买的冰箱门和厨房门都给卸下来,才勉强进门,真是折腾死了."而记者调查发现,董女士遇到的问题其实并非个例.据业内人士表示,面对都市"周末采购族"一次性购买和精细化管理的生活需求

电商是互联网与传统经济的交集 奢侈品需选对模式进门

中介交易 SEO诊断 淘宝客 云主机 技术大厅 买手准则:买手的乐趣在于如获至宝的惊喜,以及发掘未知的新鲜感. ChinaVenture投中集团发布的调查报告显示,仅仅2011年上半年,已披露的奢侈品网购公司融资案例有12起,融资总额达2.83亿美元,达到历史最高水平. 不过,奢侈品不同于此前在网购中大行其道的图书.服饰.电器等大众消费品,品牌导向特征尤为明显,网店和实体店之间的沟壑也更深.在国内,什么方式切入奢侈品电商能最快盈利,走得最稳健? 买手是只"恋战"的手 买手是一项考验眼力

谁能把大宝娶进门?

金猪年伊始,在日化界爆料的竟然是一贯低调的北京大宝.2007年2月27日,北京大宝化妆品公司在北京产权交易所正式挂牌,转让其整体产权,价格为23亿.近些天来,业界议论纷纷,众说纷纭,有美国强生故意作秀说,有美国雅芳.英荷联合利华伸出橄榄枝说,有本土日化巨头纳爱斯.立白暗生情愫说.大家对大宝的关注,是好事,眼球经济嘛,需要炒作,需要推手.待嫁闺中的大宝,哪位如意郎君会挟23亿真金白银迎娶她回家?对于普通民众来讲,大家禁不住联想本土品牌已经嫁到豪门的中华牙膏.小护士.羽西现在的不同境遇,业界关心大宝

游乐场诱人广告忽悠游客进门却要额外收费

东南网-海峡都市报9月3日讯(记者 林可 通讯员 张莉 阮俊) 近日,福州消费者杨小姐向12315投诉称,她在福州市晋安区森林公园南门森林乐园游乐场看到一则诱人的广告:"全国最低价,一次乐个够",宣称游乐场内的项目任游客游玩,每个40元,学生30元,不限时间,不限次数,但买票后,才发现被商家忽悠了.新店工商所对该游乐场立案查处,并要求商家纠正其虚假宣传内容. 在福州晋安区森林公园南大门,杨小姐看到森林乐园的广告宣传,其广告称"全国最低价,一次乐个够,场内8个项目任你玩&quo

3131把“网络丫鬟”请进门

日前,著名的网业管理服务商"网络丫鬟"网丫网与3131电子商务创新园正式签署入驻协议.网丫网的入驻对3131电子商务生态商业链布局具有重要的 战略意义.网丫网提供的服务主要以电子商务第三方托管为主的模式,为客户经营管理网上的一切生活.娱乐.商务.贸易.买卖活动,为客户提供网上置业定位分 析.互联网产品应用等一条龙的管理服务,弥补客户在技术.时间.操作经验上的不足而影响服务质量的损失.另悉,著名网络营销大师黄相如也十分看好3131 的产业链,决定组建新的网络营销项目入驻3131. 目前,

进门先体检,每个人都会被查出许多病症

在为期3天2夜的大连易健"排毒体验营"中,不允许吃饭,只能每天服用易健的产品:中途看宣传片,听大连易健工作人员的推销演讲:还要和自己的大便合影--8日晚至12日中午,记者"卧底"该体验营,全程见证了大连易健推销产品.发展加盟人员的过程.入营先交200元 查体查出数十病症"你是谁带来的?"8日17:50左右,记者进入位于工业北路某茶叶城内的大连易健"我相信"健康体验馆时,听到这句话.记者将自己看到广告.与该体验馆馆长张女士取得联

串口通讯 16进制转换-串口数据校验及ID提取怎么处理?

问题描述 串口数据校验及ID提取怎么处理? 现在有一份通讯规约 同步字/` 长度 / 命令字/ 数据区 / 校验 0xAA - - - - 1字节 1字节 1字节 0-253字节 1字节 长度计算范围:命令字-校验 校验计算范围:同步字-数据区 校验算法:字节累加和,丢弃溢出 数据区:如果没有数据,可以为空 对齐方式:大端对齐 串口波特率:9600 8数据位 无校验 1位停止位 协议指令和数据: 1.实时上传进出门数据 同步字 /长度 /命令字 / 数据区 /校验 0xAA - 0x02 进出门

综合布线在门禁系统中的应用

综合布线系统属于任何智能系统的物理层,在当初定义时,"综合"二字就被定义成:可以替代各种弱电系统(即智能系统). 但是,由于价格和意识上的原因,综合布线系统长期以来大量被用于电话和计算机网络系统,随着综合布线系统的技术日益得到普及,许多智能系统逐步开始使用综合布线系统作为其传输线路.本文将初步介绍门禁系统中的综合布线应用.一.门禁系统简介门禁系统是出入口管理系统的一个子系统,通常它采用刷卡.人体生物特征识别等技术,在管理软件的控制下,对出入口进行管理,让有资格进出的人自由通行,对那些不

门雨:给从SEO培训的学生的十大建议

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   从而现在很多企业和公司很多都已经意识到了SEM的重要性,然后随着现在社会的发展,那么开始接触SEO的朋友们也越来越多,而现在更多的还是针对的人群还是在刚毕业的学生以及从事网络工作的朋友们,在之前接触的很多SEO学生中,都发现了一个问题,就是有些时候从那些所谓的SEO高手中培训班出来的学生根本就没有学到什么东西,甚至还有很多直接就是在骗钱,那么我们应该如何选择SE