10
十二/08
0

初涉Ruby

晚上闲来无事,简单看了下ruby的语法。113页的文档几个小时看完,就是为了了解ROR。Ruby吸取了perl的正则表达式, python的简单性可读性,smalltalk的纯面向对象语法和单继承,LISP的无穷嵌套的语法,Java的线程等等,语法也不是很晦涩,我这样的菜鸟都能欣然接受。

刚接触就对ruby的条件运算符特别感兴趣,看似稍微麻烦的问题用这么多丰富的条件运算符就很容易解决。注释等语法都没有碰到过,确实新鲜。

说来也巧,刚好看到一本Rails for PHP Developers的电子书,网上google了下,只有英文版的,并且在很多翻译网站有人提出需求需要翻译,刚好自己也是个初学者,干脆一边自己看,一边翻译,把资料放到blog上面了,共享给各位和我一样的菜鸟。

想接触ROR纯粹是看到其快速开发的魅力,想在ruby的基础上再上一堂深刻的面向对象和MVC课程,并且web快速开发对我是很重要的。我想有了php和python的基础,看起来应该不难。刚好找到这本为phper写的书,里面有很多图片以及拿ruby和php的一些比较,对我来说再也适合不过了。

书中大体讲完ruby基本语法后,有这样一个例子,求50以内的素数。书中用ruby的代码如下:

$arr=[ ]        #建立一个全局数组 $arr
$arr[0]=2
 def add_prime(n)        #定义方法 将 n以内的奇素数加入$arr
     3.step(n,2){|num|$arr <<num if is_prime?num }
 end
 def   is_prime?(number)      #定义方法 判断一个数是否是素数
     j=0                                      #数组下标
     while $arr[j] * $arr[j] <=number
        return false  if number % $arr[j] ==0
        j +=1
     end
     return true
 end
add_prime(50)
print $arr.join(", "),"\n"   #转换成字符串输出

——————————————————–

我按照这个算法,用php写出来:

$return = array(2);

for ($i = 3; $i < 50; $i+=2) {
  if (is_prime($i)) array_push($return, $i);
}

function is_prime($num) {
  global $return;
  $index = 0;
  while ($return[$index] * $return[$index] <= $num) {
    if ($num % $return[$index] == 0) {
      return false;
    }
    $index++;
  }
  return true;
}

print implode(’, ‘, $return);
 

不难看出,ruby很面向对象,并且处理数据的方式很像python。

提醒自己:新鲜事物初期给人的刺激和兴奋如果能维持下去才有意义和价值,做惜时如金的人。

关键字: