`
DigitalSonic
  • 浏览: 211075 次
社区版块
存档分类
最新评论

白马非马?

阅读更多

前两天看到朋友在博客里写了一篇《白马非马》,长长的一大段,那些文字我们就不说了,我最感兴趣的是他用python和ruby“证明”的白马不是马。虽说我从小接受的教育让我始终相信白马是马,不过还是挺有意思的。

让我们来看下他是怎么写的——
战国的时候有一位公孙龙先生,提出了这么一个观点,说“白马非马”。我们的教科书上说那叫诡辩,白马明明也是马么。那么咱先写个程序来验证一下:
Python程序略
Ruby程序
class Horse
end

class WhiteHorse < Horse
end

puts Horse == WhiteHorse

结果是:false

他用程序语言复述了一下公孙龙的意思,的确没什么错。只是从语法上来看,==是用来判断两实例是否相同的,就算Ruby中类本身也是实例,可是用==也决不会变成true的,就是说如果这么写,白马永远都不是马了。所以我就改了下:

class Horse
end

class WhiteHorse < Horse
end

wh = WhiteHorse.new
puts wh.is_a? Horse

结果是:true

照我这种写法随便哪个WhiteHorse实例都是马,找不出不是马的白马,所以白马就是马啦。

注:本文纯属娱乐

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics