将方法作为参数传递(Javascript/Ruby)
来源:互联网 发布:冒险岛数据库查询器 编辑:程序博客网 时间:2024/06/10 20:38
本文展示了在Javascript和Ruby中方法是如何作为参数被传递的。
Javascript
function sayHello(name) { console.log("Hello, I am " + name);}function execute(someFunction, value) { someFunction(value);}execute(sayHello, "Lisa");
来看上面这段代码,我们将sayHello
作为第一个参数传递给了execute
。注意不是sayHello
的返回值,而是这个方法本身!
因此sayHello
成为了execute
内部的变量someFunction
,execute
可以通过someFunction()
来调用sayHello
方法。
当然,sayHello
需要接收一个参数,execute
调用someFunction
时也需要传递一个参数。
或者也可以不提前定义sayHello
方法,而是直接将方法体作为匿名函数传给execute
。
function execute(someFunction, value) { someFunction(value);}execute(function(name) { console.log("Hello, I am " + name);}, "Lisa");
Ruby
Ruby中的可调用对象可以是block, proc, lambda和method。
对应上面的Javascript实现,Ruby版本的实现可以是这样的。
proc版
say_hello = proc { |name| p "Hello, I am #{name}” }def execute(say_hello, value) say_hello.call(value)endexecute(say_hello, 'Lisa')
lambda版
say_hello = -> (name) { p "Hello, I am #{name}" }def execute(say_hello, value) say_hello.call(value)endexecute(say_hello, 'Lisa')
method版
def say_hello(name) p "Hello, I am #{name}"enddef execute(say_hello, value) say_hello.call(value)endexecute(method(:say_hello), 'Lisa')
block的匿名函数版
def execute(value) yield(value)endexecute('Lisa') { |x| p "Hello, I am #{x}" }
阅读全文
0 0
- 将方法作为参数传递(Javascript/Ruby)
- javascript函数(二)--将函数作为参数传递
- JavaScript 将事件event作为参数传递,鼠标移动事件
- 将对象作为参数传递
- 将vector作为参数传递
- 匿名方法---将代码块作为参数传递给委托
- 将方法作为参数,传递到线程中
- 在java中,如何将方法作为参数传递
- C# Winform将控件作为参数传递
- go语言将函数作为参数传递
- 将数组作为参数进行传递
- JS 将函数作为参数传递调用
- 将函数名(地址)作为参数传递
- c++ 将lambda表达式作为参数传递
- lua 将函数作为参数传递
- JavaScript 将方法名作为参数传递、调用。(被传递方法带参数)
- C# 委托的应用1:将方法作为参数传递给另一个方法
- C# 委托的应用1:将方法作为参数传递给另一个方法
- oracle多表查询
- HDU 3608 最长回文 manacher算法
- Centos7安装Shadowsocks并支持chacha20且开启bbr
- 机器学习笔记
- 落尘曦的博客打赏名单
- 将方法作为参数传递(Javascript/Ruby)
- C和C++中内存分配和释放使用介绍
- 机器学习实战之程序清单1-kNN(手写数字识别系统)
- Java方法对传递参数的处理
- JZOJ5400. 【NOIP2017提高A组模拟10.7】Repulsed 树型DP+贪心
- 快速解决centos7的防火墙问题
- golang fmt格式化字符串%v,%T
- IO多路复用之select全面总结(必看篇)
- 心路历程(绪论)