ruby这种脚本语言 主要都应用在什么地方呢?? 它和Python有什么区别 和 JavaScript又有什么区别???

Python019

ruby这种脚本语言 主要都应用在什么地方呢?? 它和Python有什么区别 和 JavaScript又有什么区别???,第1张

Ruby可以进行Web开发

Ruby

基本描述:Ruby是一种动态的面向对象的开源语言。Rails上的Ruby则是一种使用Ruby编写的开源网络程序框架,该框架与MVC(模型-查看-控制)结构十分类似。

学习理由:由于简便性,有效性以及让电脑完成任务的能力,近年来,该语言的使用量已经迅速增长。另外的好处是非常容易学习。

Python

基本描述:一种动态面对对象的翻译开源语言。使用动态存储管理。

学习理由:Python是一种高度可读的抽象语言,许多开发人员认为其非常有趣,它的语法简单,因此被Google与学术界大量运用。

JavaScript

基本描述:请不要与Java混淆,JavaScript是一种面对对象的脚本变成语言,它运行在客户端的Web浏览器上。它比Java更简洁,拥有简化的命令,易用的代码,并且无需进行编译。

使用理由:它可置入HTML,被用于大量的网页来验证表格,建立cookie,侦测浏览器以及提高设计。由于其易于学习与使用广泛,已被视为重要的学习背景。

福猪噜比Ruby商品说明;

福猪噜比(Ruby)独特可爱的造型是由著名的雕塑家及卡通创意大师共同精心设计,它采用高科技的语音识别技术,并有很高的识别效果,它是集喜、怒、哀、乐,调皮,捣蛋又善解人意为一身的高智能人性化电子宠物。它能唱会跳更会讲故事,由微电脑芯片控制的尾巴、鼻子、嘴巴及行走的动作人见人爱。它的闹钟,录音留言功能更是具有超高的实用价值!解读星座,戏说运气更是福猪噜比(Ruby)的拿手好戏!福猪噜比(Ruby)将是六十年一遇的金猪年最好的礼物!

1、特 点:会唱歌、跳舞、录音留言、闹钟提醒、准确报时、触摸发音、方向感知、语音对话、解释星座、讲故事、讲笑话。

2、体 积:长 28 CM X 15 CM * 高 15 CM

3、重 量: 500 克

4、产品包括:福猪噜比 、合格证、保修凭证、

赠 品: 福猪专用配件包,金猪年福猪纳福小秘笈,限量版豪华聚财山庄等。

5、 供能模式: 3 节5号干电池。(装入3节5号电池,注意正、负极)

6、 耗电情况: 3节电池可以用2个星期左右。

录音留言:将你想说的话录下来让福猪噜比( Ruby )来传递;

同时按住左右耳按键持续 3 秒,语音提示“进入录音留言状态,您有 30 秒时间,听到嘀声后开始录音,确认请按我的左耳,需重新录制请按我的右耳,嘀”,录音结束按左耳键确认,超过 30 秒时间录音将自动确认,放音按右耳键即可,如重新录制留言将删除上一段录音。

闹钟提醒:福猪噜比( Ruby )可以按你所设置的时间“风趣”的叫醒你;

闹铃设定方法:开机状态下按右耳键持续 3 秒后,语音提示 “进入闹铃设置状态,确认请按右耳,重新设置请按左耳,(报原闹铃时间)”。

保留原闹铃时间:按右耳键即可;

重新设置:按左耳键,首先设置小时数,按左耳键递增,右耳键递减, 3 秒钟后自动确认;同法设置分钟数, 福猪噜比( Ruby ) 将准时“幽默、风趣”地闹醒你。(懒猪起床!懒猪起床!我来看猪 .. 猪在床上 ……

假如小朋友不按时睡觉,他会提醒小朋 友睡觉,告诉小朋友不要吵啦等等,每天早上福猪“噜比”可以替代父母叫醒儿童,更容易被儿童所接受,可以养成小朋友不赖床的良好生活习惯。也可以减少大人不少麻烦。 “噜比”到时间就睡觉给孩子树立了好榜样,可以帮助儿童养成按时起床的好习惯。

准确报时:

在关机状态下可以按左耳键报时,开机状态可以按左耳键或直接语音询问:“几点了” 福猪噜比( Ruby )将准确报时。

全天候报时(现在是七点 不浪费一分一秒 这是猪的至理名言 ……… )

可以增强小孩子的时间观念。这样小朋友就可以更好更有效的利用时间,合理的学习和娱乐啦。

唱儿歌:

( 1 )儿歌播放,无需任何按键,直接对福猪噜比( Ruby )说: “ 唱首儿歌吧 ” ,福猪噜比( Ruby )就会唱儿歌。完毕,可继续接“再来一个”,继续听不同的儿歌。

( 2 )若福猪噜比( Ruby )拒绝了你的要求,并提出帮你解读今天的运气或星座的时候,可继续接“好啊”或“不好”。

解释星座:把你的生日告诉它,它会解读你的星座,还能风趣的解读你的性格、爱好、成就呢,神奇吧!

( 1 )你可以直接说:“算算我的星座吧”

福猪噜比( Ruby ) 会说“好啊!告诉我你的生日吧!请按照说明提示,按按我的耳朵,请输入你的生日日期。”

( 2 )或者福猪噜比( Ruby )说:“我给你算算星座吧!”这时你只要回答它:“好啊!”福猪噜比( Ruby )语音提示:“告诉我你的生日吧!请按照说明提示,按按我的耳朵,请输入你的生日日期。”

( 3 )输入生日:

A .按照福猪噜比( Ruby )语音提示按左耳键递增,按右耳键递减,设置年, 3 秒钟后自动确认。

B. 继续语音提示“设置月” “设置日”,同法依次设置;

( 4 )正确的输入生日后你会得到福猪噜比( Ruby )对于你星座的独特解读:“哇 ~` !你是狮子座,狮子座的你 … ”

( 5 )有意思吧,福猪噜比( Ruby )的解读方式更是与众不同,即使你遇到同年同月的知己,福猪噜比( Ruby )的解读内容也会不断变换、丰富多彩哦 ~ !

声音信号与福猪噜比( Ruby )的反应功能:

( 1 )如果你不跟福猪噜比( Ruby )说话 , 5 分钟内它会主动和你交谈或自言自语, 5 分钟后再没有声音信号输入 福猪噜比( Ruby ) 进入潜睡模式,按任意键便可进入游戏模式。

( 2 )如果 福猪噜比( Ruby ) 没有识别出您说的话,他会有相应提示。例如: “ 阿嚏,这是我今天第一百零一个喷嚏,你刚才说什么”等。 如果 福猪噜比( Ruby ) 听到的是噪声或者同时有很多人跟他说话, 福猪噜比( Ruby ) 就会视它心情而定说 相应的话。

讲笑话:

直接对福猪噜比( Ruby )说:“讲个笑话听听。” 福猪噜比( Ruby )就会讲笑话,完毕,可以对它说:“再来一个”,继续听不同的笑话。

戏说运气:

直接对福猪噜比( Ruby )说:“我今天运气好吗?”便可,福猪噜比( Ruby )就会用它独特的方式戏说你当日的运程,当然是戏说,信不信由你,每天都不相同哦,快来试试吧!

互动功能:摸摸福猪噜比( Ruby )的头或提起它的尾巴,它会有喜、怒、哀、乐不同的表现,可逗了!

( 1 )摸摸福猪噜比( Ruby )的脑袋;

( 2 )拉住福猪噜比( Ruby )的尾巴,使福猪噜比( Ruby )倒挂在空中。

福猪噜比( Ruby )能真正做到与主人之间的互动,善解人意的它会让你有意想不到的收获哦!

在Ruby中,有多种方法可以实现方法的动态调用。

1.

使用send方法

第一种实现动态方法调用是使用send方法,send方法在Object类中定义,方法的第一个参数是一个符号用来表示所要调用的方法,后面则是所调用方法需要的参数。

“This

is

a

dog1″.send(:length)

=>

14

上面的代码中通过send方法去对一个字符串执行length操作,返回字符串的长度。

class

TestClass

def

hello(*args)

”Hello

+

args.join(‘

‘)

end

end

a

=

TestClass.new

puts

a.send

:hello,

“This”,

“is”,

“a”,

“dog!”

执行结果为:

Hello

This

is

a

dog!

2.

使用Method类和UnboundMethod类

另一种实现动态方法调用是使用Object类的method方法,这个方法返回一个Method类的对象。我们可以使用call方法来执行方法调用。

test1

=

“This

is

a

dog1″.method(:length)

test1.call

=>

14

class

Test

def

initialize(var)

@var

=

var

end

def

hello()

”Hello,

@var

=

#{@var}”

end

end

k

=

Test.new(10)

m

=

k.method(:hello)

m.call

#=>

“Hello,

@iv

=

99″

l

=

Test.new(‘Grant’)

m

=

l.method(“hello”)

m.call

#=>

“Hello,

@iv

=

Fred”

可以在使用对象的任何地方使用method对象,当调用call方法时,参数所指明的方法会被执行,这种行为有些像C语言中的函数指针。你也可以把method对象作为一个迭代器使用。

def

square(a)

a*a

end

mObj

=

method(:square)

[1,

2,

3,

4].collect(&mObj)

=>

[1

4

9

16]

Method对象都是和某一特定对象绑定的,也就是说你需要通过某一对象使用Method对象。你也可以通过UnboundMethod类创建对象,然后再把它绑定到某个具体的对象中。如果UnboundMethod对象调用时尚未绑定,则会引发异常。

class

Double

def

get_value

2

*

@side

end

def

initialize(side)

@side

=

side

end

end

a

=

Double.instance_method(:get_value)

#返回一个UnboundMethod对象

s

=

Double.new(50)

b

=

a.bind(s)

puts

b.call

执行结果为:

100

看下面一个更具体的例子:

class

CommandInterpreter

def

do_2()

print

“This

is

2

end

def

do_1()

print

“This

is

1

end

def

do_4()

print

“This

is

4

end

def

do_3()

print

“This

is

3

end

Dispatcher

=

{

?2

=>

instance_method(:do_2),

?1

=>

instance_method(:do_1),

?4

=>

instance_method(:do_4),

?3

=>

instance_method(:do_3)

}

def

interpret(string)

string.each_byte

{|i|

Dispatcher[i].bind(self).call

}

end

end

interpreter

=

CommandInterpreter.new

interpreter.interpret(’1234′)

执行结果为:

This

is

1

This

is

2

This

is

3

This

is

4

3.

使用eval方法

我们还可以使用eval方法实现方法动态调用。eval方法在Kernel模块中定义,有多种变体如class_eval,module_eval,instance_eval等。Eval方法将分析其后的字符串参数并把这个字符串参数作为Ruby代码执行。

str

=

“Hello”

eval

“str

+

World!’”

=>

Hello

World!

sentence

=

%q{“This

is

a

test!”.length}

eval

sentence

=>

15

当我们在使用eval方法时,我们可以通过eval方法的第二个参数指明eval所运行代码的上下文环境,这个参数可以是Binding类对象或Proc类对象。Binding类封装了代码在某一环境运行的上下文,可以供以后使用。

class

BindingTest

def

initialize(n)

@value

=

n

end

def

getBinding

return

binding()

#使用Kernel#binding方法返回一个Binding对象

end

end

obj1

=

BindingTest.new(10)

binding1

=

obj1.getBinding

obj2

=

BindingTest.new(“Binding

Test”)

binding2

=

obj2.getBinding

puts

eval(“@value”,

binding1)

#=>

10

puts

eval(“@value”,

binding2)

#=>

Binding

Test

puts

eval(“@value”)

#=>

nil

可以看到上述代码中,@value在binding1所指明的上下文环境中值为10,在binding2所指明的上下文环境中值为Binding

Test。当eval方法不提供binding参数时,在当前上下文环境中@value并未定义,值为nil。