- 浏览: 268294 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (263)
- mysql (5)
- boost (6)
- 工具 (10)
- IT生活 (7)
- 多线程 (3)
- Ruby (15)
- php (2)
- MongoDB (39)
- 移动互联网 (2)
- 测试 (8)
- c++ (28)
- 书 (1)
- 网站 (3)
- 网络编程 (14)
- 开源软件 (1)
- 分布式计算 (1)
- 得得得 (1)
- php,wordpress (1)
- error (5)
- 编译 (2)
- 学习 (1)
- 杀毒软件 (1)
- dd (0)
- linux (21)
- 数据库 (1)
- STL (1)
- c++/c (5)
- 软件设计 (1)
- 操作系统 (4)
- 库 (2)
- win32 (1)
- s (0)
- openssl (1)
- perl (2)
- debug (1)
- windows (4)
- python (12)
- windows 防火墙 (1)
- vs (1)
- vim (2)
- vc (1)
- 浏览器插件的危害 (1)
- curl (0)
- 判断手机号码合法性的库 (0)
- 地址备注 (0)
- 安装 File::Slurp (1)
- cenos (2)
- shell (1)
- linunx (1)
- internet (1)
- software (1)
- widows (1)
- linux io (1)
- nginx (2)
- 算法 (2)
- google (1)
- protobuf (2)
- tengine (1)
- tools (1)
- lua (2)
- liunx (1)
- vcard (1)
- lua-iconv (1)
- 网络 (2)
- teat (0)
- ldconfig linux (0)
- awk (0)
- grep (0)
- windws (2)
- linux 命令 (1)
- tcp dump (1)
- vmware (1)
- question2answer (2)
- mongdb (1)
- 正则 (1)
- OCR (2)
- Windows Server (1)
最新评论
转: http://googya.iteye.com/blog/1042346
数字转化为字符:
.在ruby的世界中,很多东西不怕你做不到,就怕你想不到。正所谓,思想有多远,你就可以走多远。思想不一定非得是自己的,借鉴他人的也很好(不过,做人要厚道,如果是别人的idea,要把思想来源说明白、讲清楚)。ruby世界是个开放的世界,能在这样的世界里生活,那是件很爽的事情。扯了一下淡。。。。
言归正传。。。
刚看ruby时,看到 1+“23”这样的表达式,觉得很N(orth)B,数字跟字符居然可以这样运算。时间越久,就越想知道为什么可以这样做,具体的过程是什么样的,在rubinius之前,这个探索是痛苦的。因为ruby是用c语言实现的,而那个C语言的代码我看着实在是不习惯。比如下面的代码,直到现在也木有弄明白。哪位知道的可以给我指导一下。
自从有了rubinius,又多了一条探索ruby世界奥秘的路,重要的是,这是条我比较习惯的路。好吧,还是回到1+“23”这个问题上来。
rubinius的实现中,主要用到了3个方法: :+, :redo_coerce,:math_coerce
具体如下:
整个实现就差不多了,但是没完!!!注意到math_coerce这个方法的参数之一是other,而other又调用了coerce这个方法。。。。。从中看出点什么东西来没????我猜你想到了,要使1+“23”能工作,也就是说能得到24,那么应该为String类实现coerce(貌似强制的意思)这个方法。
这样就大功告成了。理解了这个,也就可以为其他很多的类实现运算,进而可以得到你想要的结果了。North B
以上看的有点晕,下面是我实现的一个操作:基本符合我的要求
数字转化为字符:
i = 100 text = String(i)
.在ruby的世界中,很多东西不怕你做不到,就怕你想不到。正所谓,思想有多远,你就可以走多远。思想不一定非得是自己的,借鉴他人的也很好(不过,做人要厚道,如果是别人的idea,要把思想来源说明白、讲清楚)。ruby世界是个开放的世界,能在这样的世界里生活,那是件很爽的事情。扯了一下淡。。。。
言归正传。。。
刚看ruby时,看到 1+“23”这样的表达式,觉得很N(orth)B,数字跟字符居然可以这样运算。时间越久,就越想知道为什么可以这样做,具体的过程是什么样的,在rubinius之前,这个探索是痛苦的。因为ruby是用c语言实现的,而那个C语言的代码我看着实在是不习惯。比如下面的代码,直到现在也木有弄明白。哪位知道的可以给我指导一下。
static inline void rb_ary_modify_check(ary) VALUE ary; { if (OBJ_FROZEN(ary)) rb_error_frozen("array"); if (FL_TEST(ary, ARY_TMPLOCK)) rb_raise(rb_eRuntimeError, "can't modify array during iteration"); if (!OBJ_TAINTED(ary) && rb_safe_level() >= 4) rb_raise(rb_eSecurityError, "Insecure: can't modify array"); }
自从有了rubinius,又多了一条探索ruby世界奥秘的路,重要的是,这是条我比较习惯的路。好吧,还是回到1+“23”这个问题上来。
rubinius的实现中,主要用到了3个方法: :+, :redo_coerce,:math_coerce
具体如下:
def +(o) Ruby.primitive :fixnum_add redo_coerce :+,o end def redo_coerce(math,right) b,a = math_coerce(right) a.__send__ meth,b end def math_coerce(other,error = :coerce_error) begin values = other.coerce(self)#[other,self] rescue send error,other end unless values.__kind_of__(Array)&&values.length==2 do raise TypeError,"coerce must return [x,y]" end values[1],values[0] end
整个实现就差不多了,但是没完!!!注意到math_coerce这个方法的参数之一是other,而other又调用了coerce这个方法。。。。。从中看出点什么东西来没????我猜你想到了,要使1+“23”能工作,也就是说能得到24,那么应该为String类实现coerce(貌似强制的意思)这个方法。
class String def coerce(n) if self['.'] values = [n, Float(self)] print "self is ",self,"\n" [n, Float(self)] else [n, Integer(self)] end end end
这样就大功告成了。理解了这个,也就可以为其他很多的类实现运算,进而可以得到你想要的结果了。North B
以上看的有点晕,下面是我实现的一个操作:基本符合我的要求
class String def coerce(n) if self["."] values = [n, Float(self)] else values = [n, Integer(self)] end end end i = "12.6" j = "77" k = 23 m = 0 m += k puts m m += j puts m m += i puts m
发表评论
-
rubuy http
2013-03-28 16:15 657http://ruby-doc.org/stdlib-2.0/ ... -
[转]ruby正则表达式
2013-01-17 18:31 1123ruby正则表达式 Posted on 02/21/2012 ... -
[转]一步一步学Ruby(九):Ruby正则表达式(上)
2013-01-10 17:24 614记录个链接:http://www.cnblogs.com/cn ... -
[转]ruby 中的urlencode和urldecode
2012-07-12 18:40 950方法一: def URLDecode(str) str.g ... -
【转】ruby 杀系统进程
2012-07-12 10:50 749require 'win32ole' #功能说明: #- ... -
【转】ruby 调用其他函数
2012-06-27 19:53 9051、获取其他程序的运行结果 x= system(" ... -
ruby 下载文件到本地
2012-05-19 16:36 1196require 'open-uri' def dow ... -
ruby 解析 xml
2012-05-17 20:16 17881.xml文件如下: <?xml version=&q ... -
gem
2012-04-12 14:00 0gem list gem install gem instal ... -
gem 安装 找不到 http://gems.rubyforge.org/
2012-04-12 11:45 1210使用Gem install安装starling出错 ERROR ... -
sublime ruby 编辑器
2012-03-02 19:13 732http://v.youku.com/v_show/id_XM ... -
mongodb 的 ruby 支持安装
2012-02-07 14:01 778帮助文档: 1. http://api.mongodb.org ... -
Ruby 读取文件
2011-11-23 17:17 869读写二进制文件 File.open('in.dat' ... -
Ruby 网络编程
2011-11-03 16:38 963Ruby支持很多网络协议,不管是高层的还是底层的。ruby提供 ... -
Ruby invalid multibyte char(US-ASCALL)
2011-08-10 14:08 889需正确输出中文的方法: 在运行脚本文件时,加入相关的参数-Ks ...
相关推荐
本资源是ruby代码,提供了一系列封装好的函数,用于快速进行转换,一个函数搞定,包括如下转换,二进制字符串与hex字符串的互转。二进制字符串与整数互转,包括uint8,uin16,uint32, 以及本地字节序和网络字节序两种...
如果你在项目中使用了Ruby,那么添加Stringex作为依赖可以极大地提升你的字符串处理能力。通过阅读源码,你可以更深入地理解其实现原理,甚至可以根据自己的需求扩展它的功能。 总之,Stringex是Ruby开发者的一个...
2.判断字符串中是否包含另一个串 代码如下: str.include? other_str => true or false “hello”.include? “lo” #=> true “hello”.include? “ol” #=> false “hello”.include? ?h #=> true 3.字符串插入 ...
2. **码点与图形字符**:Ruby中的`codepoints`方法返回字符串中每个字符的Unicode码点,这是一个整数值。码点并不总是直接对应于屏幕上看到的字符,因为某些码点可能表示组合字符序列。使用`String#chars`或`String#...
Ruby将字符串像数字一样处理.我们用单引号(‘…’)或双引号(…)将它们括起来. ruby> abc abc ruby> ‘abc’ abc 单引号和双引号在某些情况下有不同的作用.一个由双引号括起来的字符串允许字符由一个前置的斜杠...
Ruby中的字符串还与数组共享一些方法,比如 `each_line`、`each_byte` 和 `each_char`,它们都可以返回 `Enumerator` 对象。`Enumerator` 模块提供了一套灵活的方法,使得可以在不提供块的情况下对这些方法进行后续...
最近有个需求,需要根据一个字符串当作一个类来使用,例如: 有一个字符串 “ChinaMag”,根据这个字符串调用 类 ChinaMag下的方法。 解决办法: 1.rails可以使用 constantize方法。 代码如下: pry(main)> ...
Ruby-GeoPattern是一个开源库,由Jason Long 创建,它允许开发者根据输入的任意字符串生成美观的几何背景图像。这些图像可以用于网站设计、图形艺术或其他任何需要独特视觉元素的地方。GeoPattern利用了Ruby语言的...
标签中的“源码”意味着可能涉及具体实现代码,而“工具”可能是指使用某种编程工具或者库(如Ruby的`zlib`库)来实现字符串压缩功能。对于学习和开发,理解这些基础概念并能实际操作是十分重要的,特别是在处理...
数据类型则包括字符串、数字、布尔值、数组、哈希等。控制结构包括条件语句(如if/else,case)和循环(如while、for、each)。了解这些基础知识是编程的第一步。 其次,Ruby的面向对象特性是其核心魅力之一。它...
Ruby支持单引号和双引号字符串,与Python类似,它也使用三引号创建多行字符串: ```ruby text = ~EOF 这是一段 多行 字符串 EOF ``` 这里的`~`运算符(被称为heredoc)允许我们在多行字符串中直接插入换行。...
Ruby提供了许多工具来进行元编程,如`eval`函数可以执行字符串中的代码,`class_eval`和`instance_eval`允许在运行时修改类或对象的行为。此外,Ruby的`send`方法可以动态调用方法,`method_missing`可以捕获未定义...
在Ruby中,一切都是对象,包括基本的数据类型如字符串、数字和布尔值。这种特性使得Ruby在处理复杂问题时具有很高的灵活性。文档中将详细讲解Ruby的基础语法,如变量声明、控制结构(条件语句、循环)、函数和方法...
8. **Ruby中的字符串拆分** Ruby的`split`方法非常直观: ```ruby str = "apple,banana,grape" fruits = str.split(",") puts fruits # 输出:apple\nbanana\ngrape ``` 以上就是不同编程语言中使用`string`...
接下来,我们将详细探讨Ruby中字符串的操作方法,以及如何利用Ruby处理不同格式的文本数据,例如CSV和XML。 首先,Ruby中的字符串处理功能非常丰富。字符串是Ruby中一个类(String class),它提供了一整套方法来...
它会提取首字母,如果字符串中有数字或特殊字符,它们会被忽略。例如,对于用户名 "jane123",它会生成 "JN" 的头像。 ## 5. 自定义字体 默认情况下,LetterAvatar 使用内置的字体。但如果你需要自定义字体,可以...
文档通常会涵盖Ruby的基础知识,例如变量、数据类型(如字符串、整数、浮点数、布尔值和数组)、流程控制(条件语句、循环)、函数、类与对象、模块、继承、混合、异常处理等。此外,它可能还会涉及Ruby的元编程特性...
Ruby中的分界符是指所有非字母或数字的单字节字符,可以成为字符串的界定符,并且它们通常需要成对出现,比如尖括号<和>、感叹号!和!、花括号{和}等。字符串的表示方法有多种,包括最简单的单引号和双引号包裹字符串...