c – void foo(int&x) – > Ruby?通过引用传递整数?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c – void foo(int&x) – > Ruby?通过引用传递整数?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1679字,纯文字阅读大概需要3分钟。
内容图文
作为一种为我的C编程作业增添趣味的一种方式,我决定不用将书中的C键输入我的计算机,而是将其改为Ruby.是的,这有点傻,但我很无聊.
无论如何,我在将这种功能转换为Ruby时遇到了麻烦
void swap(int &a,int &b){
int c=b;
b=a;
a=c
}
函数中等效的ruby代码是什么?
解决方法:
Ruby是严格按值传递的.总是.但有时候这些价值观就是那些价值观.
这里有几个链接:
> Java is Pass-by-Value, Dammit! (Scott “JavaDude” Stanchfield)
> Parameter passing in Java (Jon Skeet)
> Does Java pass by reference?
> Java, pass-by-value, reference variables
请注意,虽然所有这些都说“Java”,但他们应该说“Smalltalk及其后代”,其中包括Java,Ruby和许多其他语言.
我认为大多数混乱源于两个问题:
> Ruby按值传递引用.但该句中的“引用”一词与“引用引用”中的“引用”一词并不相同.当我们消除歧义时,可能更清楚:让我们将“传递参考”替换为“传递变量”和“参考”替换为“指针”(注意这些是“好的”表现良好的指针,而不是“坏” “来自C的人):
> Fortran是按变量传递的
> Ruby是按值传递的,它传递的值主要是poointers
> Ruby传递的引用(poointers)指向可变对象.因此,虽然您无法更改引用,但可以改变引用指向的对象.这里的问题是Ruby(像大多数命令式面向对象语言一样)混淆了身份,状态和价值的概念.您可以在此处了解有关该问题以及如何解决此问题的更多信息(请注意,虽然他们说“Clojure”,但所呈现的概念是通用的,并且可以同样适用于OO):
> Persistent Data Structures and Managed References – Clojure’s Approach to Identity and State – Rich Hickey – QCon London 2009
> Are We There Yet? – A deconstruction of object-oriented time – Rich Hickey – JVM Language Summit
顺便说一句:我故意用面向对象的OO拼错“poointers”以明确我不是在谈论原始内存地址,我说的是对对象的不透明引用(并且出于显而易见的原因我不想使用这个词“参考”;如果你知道一个更好的词既不是“指针”也不是“参考”,我很乐意听到它.
内容总结
以上是互联网集市为您收集整理的c – void foo(int&x) – > Ruby?通过引用传递整数?全部内容,希望文章能够帮你解决c – void foo(int&x) – > Ruby?通过引用传递整数?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。