第一个ruby程序

老实说不是很喜欢去讨论ruby和python的对比,似乎总是把两个语言放在对立的位置上,我觉得没有必要,同样是动态语言,同样是解释型脚本语言,很多特性都是互相影响的,语言本身也在不断进化,我们更应该关注的是编程思想而不是语言本身。

说了一点题外话,之所以要求学ruby,主要就是因为有一本好书想读,就是Paolo Perrotta的《Ruby元编程》,书看了一天,ruby语法学了半天,用irb捣鼓了一晚上,应该说跟python,scala都有很多相近的地方,因为没有接触Lisp,Haskell之类的函数编程语言,因此不好说跟他们怎么样,但是学了python再去学ruby是觉得非常轻松地。

书中星期二中有个问题挑战,就是对DS和Computer类中的函数进行动态生成,好吧,我又犯老毛病了,书看一半,自己先干,在看到define_method方法后用我自己的思路捣鼓了一个解决方案,还没看书中的实例,先把代码弄出来看看,以下就是我的第一个ruby程序:

# 数据源定义,原应为关联数据库,这里只是进行模拟
class DS
  parts = ‘cpu‘, ‘mouse‘, ‘keyboard‘  # 临时数组用于批量生成方法
  parts.each do |part|
    define_method "get_#{part}_info".to_sym do |id| # 生成三种设备的信息函数
      "This is #{part} #{id}."
    end
    define_method "get_#{part}_price".to_sym do |id|  # 生成三种设备的价格函数
      parts.zip([150, 50, 40]).to_h[part] # 通过zip合并数组转换为哈希结构再索引
    end
  end
end
# 电脑配件定义
class Computer
  def initialize(computer_id, data_source)  # 初始化id和数据源
    @id = computer_id
    @data_source = data_source
  end
  parts = ‘cpu‘, ‘mouse‘, ‘keyboard‘
  parts.each do |part|
    define_method part.to_sym do
      info = @data_source.send("get_#{part}_info".to_sym, @id)
      price = @data_source.send("get_#{part}_price".to_sym, @id)
      result = "#{info} ($#{price})"
      return " * #{result}" if price >= 100 # 判断价格是否高于100,加星号显示
      result
    end
  end
end
puts "DS methods: #{DS.instance_methods(false)}"
puts "Computer methods: #{Computer.instance_methods(false)}"

ds = DS.new
computer = Computer.new(10, ds)
puts computer.cpu
puts computer.mouse
puts computer.keyboard
				
时间: 2024-10-25 22:04:55

第一个ruby程序的相关文章

第一个Ruby程序报错 uninitialized constant Hello

今天是我第一次接触Ruby语言,按照教程编写了一个很简单的Ruby程序,将文件命名为Hello.rb,内容如下: puts "Hello,Ruby!"; 但是执行时却报错: 百度后的解决方案如下:你还在irb里面,所以报这个错,你退出(exit)irb,然后执行ruby Hello.rb就可以了. 我尝试退出irb,但是程序自动进入irb#1,执行还是报错: 我打开cmd执行ruby C:\Ruby22\bin\Hello.rb命令后可以正常输出: 另外,在写puts语句的时候,后面的

(三)运行第一个ruby程序

puts "hello world"puts ("ni hao shijie") #ruby中方法后面的括号写不写都行,puts方法作用类似printf方法a="hello"puts ab=3c=2puts b+cputs a+b #行8:数字和字符串不能相加,数字类型不会像java一样隐式地自动转换为字符串类型 第八行(:8)数字和字符串不能相加,点击蓝色字体跳转到错误行8 implicit 隐式 错误在于:没有隐式地将Fixnum数字类型转换

[Ruby on Rails系列]3、初试Rails:使用Rails开发第一个Web程序

本系列前两部分已经介绍了如何配置Ruby on Rails开发环境,现在终于进入正题啦! Part1.开发前的准备 本次的主要任务是开发第一个Rails程序.需要特别指出的是,本次我选用了一个(PaaS开发平台),也就是Rails教程中介绍的Cloud 9平台,该平台已经自动为我们作好了环境配置的工作:只要你有一个浏览器就可以使用该云端开发环境.非常的方便快捷!简直赞!平台网址如下:https://c9.io/ Cloud 9开发平台的实质是为每一个注册的开发者在服务器端分配一个Linux虚拟机

[脚本_Ruby]第一个Ruby On Rails WEB应用程序HelloWorld

经过不懈努力终于把Ruby On Ralis 的开发环境搭建好了,在WIN7系统下,赶紧来个最最常用的例子来练练手吧,感受一下Ruby... 再次声明一下,我的ruby -v是ruby-2.0.0p247.gem -v是:2.0.3.rails -v 是:4.0.0.应该是比较新的吧!所以一些命令可能不一样吧!首先先新建一个工作目录吧!我的是:D:\RubyWorkSpace. 打开ruby的字符命令界面,进入到工作目录,新建项目hello. [plain] view plaincopyprin

thrift学习笔记(一) thrift简介及第一个helloword程序

简介 facebook开源的RPC框架,秉承了Facebook一贯的只管拉屎不管擦屁股的作风. Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 等等编程语言间无缝结合的.高效的服务. Thrift最初由facebook开

用 Ubuntu 12.04 搭建一个 Ruby on Rails 本地开发环境

转载,原文链接 http://linux.cn/portal.php?mod=view&aid=170 用 Ubuntu 搭建一个 Ruby on Rails 本地开发环境 想要开发 Ruby on Rails 应用吗?虽然已经有一些(初级的)Ruby on Rails 教程了,但是似乎在如何搭建一个简洁而更新的本地开发环境方面还有些不甚确定的地方. 这个教程将引导你通过几个步骤来搭建一个基于 Ubuntu 的 Ruby on Rails 本地开发环境.而这个教程的即将发布的第二部分,将帮助你搭

第一个Rust程序——Hello,world!

既然你已经安装了Rust,我们开始写第一个Rust程序吧.在任何一种新语言中的第一个程序是在屏幕上输出"Hello,world!"是一个传统.以这样一个简单的程序开始的好处是,它不仅可以检验你已经安装了编译器,而且还能验证它是否正常工作.并且往屏幕上输出东西是一个很平常的事情. 第一件要做的事情是创建一个保存我们的代码的文件.我喜欢在我的home目录中创建一个projects目录,把我所有的工程都放在这个目录中.Rust并不关心你的代码放在哪. 这里我们有必要说明一点:我们假设你基本熟

Python征途-02.第一个Python程序

上一章介绍了Python的相关知识,本章就开始着手操作,创建我们的第一个Python程序,首先需要配置好Python的运行环境 1.python环境准备 1.1.windows下安装 Windows10配置环境变量,防止程序调用出错 [右键此电脑]-->[属性]-->[高级系统设置]-->[高级]-->[环境变量]-->[在系统变量栏里,选中变量名Path,进行编辑] --> [将Python安装目录追加到变量值中,用 : 分割] 如:我的路径为D:\Program F

第一个JAVA程序解析

上一篇博客中,我们编写了第一个JAVA程序并使用最原始的方式对其进行编译运行,很多文章或书籍中对该种编译运行方式不做介绍,但是我认为这有助于我们更好的了解.学习JAVA,是不可忽略的一部分,在我身边有很多人,学完一段时间JAVA后,只知道如何在IDE中进行开发,却不知脱离IDE后该如何运行,不得不说这也是一种悲哀. 言归正传,我们来看一下上一篇博客中的例子"Hello World",这也是几乎所有的编程语言都会编写的一个例子,非常的经典. 下面我们就来分析一下: /**  *  我的第