`
Hooopo
  • 浏览: 335236 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Function and Block

阅读更多
js:
var block = function(arg){ alert(arg) };
var func = function(arr,blck){
  for (var i in arr){
    blck(arr[i]);
  }
};

func([1,2,3],block);

ruby:
class Array
  def my_each
    if block_given?
      yield(self)
    else
      raise ArgumentError
    end
  end
end
[1,2,3].my_each{|i| puts i}



当然ruby自带的each map是很方便的..
[1,2,3].each{|i| puts i}

2
2
分享到:
评论
13 楼 鹤惊昆仑 2010-01-31  
for (var i in arr) 这个js在IE浏览器中不行。
12 楼 qichunren 2009-10-23  
我再来踩一脚
11 楼 Hooopo 2009-10-14  
全冠清 写道
 

被谁踩了一脚。。。一定是你干的
10 楼 全冠清 2009-10-14  
 
9 楼 Hooopo 2009-10-12  
全冠清 写道
Hooopo 写道
全冠清 写道
Array.prototype.each=function(fun){
			for(var i=0;i<this.length;i++){  
                fun(i,this[i])
			} 
		}
		var array=[1,2,3]
		array.each(function(m,n){
			alert(m+":"+n)
		})

这样写貌似更像block..

这样写的话就更OO一些了..不过还是要自己加..很麻烦,js让人不爽的地方就是屁大点的功能都要自己写,感觉回到了c时代...而ruby内建了很多常用的方法,你想要什么就有什么.比如这些:
 Enumerable(all?, any?, collect, detect, each_cons, each_slice,
 each_with_index, entries, enum_cons, enum_slice, enum_with_index,
 find, find_all, grep, include?, inject, inject, map, max, member?,
 min, partition, reject, select, sort, sort_by, to_a, to_set, zip)


还有这些:
Instance methods:
-----------------
     &, *, +, -, <<, <=>, ==, [], []=, abbrev, assoc, at, clear,
     collect, collect!, compact, compact!, concat, dclone, delete,
     delete_at, delete_if, each, each_index, empty?, eql?, fetch, fill,
     first, flatten, flatten!, frozen?, hash, include?, index, indexes,
     indices, initialize_copy, insert, inspect, join, last, length, map,
     map!, nitems, pack, pop, pretty_print, pretty_print_cycle, push,
     quote, rassoc, reject, reject!, replace, reverse, reverse!,
     reverse_each, rindex, select, shift, size, slice, slice!, sort,
     sort!, to_a, to_ary, to_s, to_yaml, transpose, uniq, uniq!,
     unshift, values_at, yaml_initialize, zip, |



这些功能你可以试用下mootools,
引用

forEach  迭代一个数组。这个方法使各个浏览器都能使用forEach这个方法而不需要浏览器原生的对 forEach 的支持。 
filter  实现非原生支持filter的浏览器的filter方法 
map  实现非原生支持 map 的浏览器的filter方法 
every  实现非原生支持every 的浏览器的filter方法 
some  实现非原生支持 some 的浏览器的filter方法 
indexOf  实现非原生支持 indexOf 的浏览器的filter方法 
each  和 Array.forEach方法等同 
copy  返回一个数组的副本 
remove  移除在数组中的和给出值相等的项 
contains  测试数组中是否含有所给出的项 
associate  传入一个作为键的数组,然后和本数组的值结合产生一个键值对。 
extend  接纳另外一个数组 
merge  和另一个数组合并,重复的项将被替代。 
include  把给出的元素纳入本数组。 
getRandom  在数组中随机选择一个项 
getLast  返回数组中最后一个项 

基本上够用了,不过用到的地方实在不多。

这些东东是有用的,有了这些可以把代码缩短很多,对ruby来说短不短不重要。可读就行了。但是对js来说1k的js代码量和100k的代码量差距还是很大的。。
8 楼 Hooopo 2009-10-12  
多学一门框架是负担.........
7 楼 全冠清 2009-10-12  
Hooopo 写道
全冠清 写道
Array.prototype.each=function(fun){
			for(var i=0;i<this.length;i++){  
                fun(i,this[i])
			} 
		}
		var array=[1,2,3]
		array.each(function(m,n){
			alert(m+":"+n)
		})

这样写貌似更像block..

这样写的话就更OO一些了..不过还是要自己加..很麻烦,js让人不爽的地方就是屁大点的功能都要自己写,感觉回到了c时代...而ruby内建了很多常用的方法,你想要什么就有什么.比如这些:
 Enumerable(all?, any?, collect, detect, each_cons, each_slice,
 each_with_index, entries, enum_cons, enum_slice, enum_with_index,
 find, find_all, grep, include?, inject, inject, map, max, member?,
 min, partition, reject, select, sort, sort_by, to_a, to_set, zip)


还有这些:
Instance methods:
-----------------
     &, *, +, -, <<, <=>, ==, [], []=, abbrev, assoc, at, clear,
     collect, collect!, compact, compact!, concat, dclone, delete,
     delete_at, delete_if, each, each_index, empty?, eql?, fetch, fill,
     first, flatten, flatten!, frozen?, hash, include?, index, indexes,
     indices, initialize_copy, insert, inspect, join, last, length, map,
     map!, nitems, pack, pop, pretty_print, pretty_print_cycle, push,
     quote, rassoc, reject, reject!, replace, reverse, reverse!,
     reverse_each, rindex, select, shift, size, slice, slice!, sort,
     sort!, to_a, to_ary, to_s, to_yaml, transpose, uniq, uniq!,
     unshift, values_at, yaml_initialize, zip, |



这些功能你可以试用下mootools,
引用

forEach  迭代一个数组。这个方法使各个浏览器都能使用forEach这个方法而不需要浏览器原生的对 forEach 的支持。 
filter  实现非原生支持filter的浏览器的filter方法 
map  实现非原生支持 map 的浏览器的filter方法 
every  实现非原生支持every 的浏览器的filter方法 
some  实现非原生支持 some 的浏览器的filter方法 
indexOf  实现非原生支持 indexOf 的浏览器的filter方法 
each  和 Array.forEach方法等同 
copy  返回一个数组的副本 
remove  移除在数组中的和给出值相等的项 
contains  测试数组中是否含有所给出的项 
associate  传入一个作为键的数组,然后和本数组的值结合产生一个键值对。 
extend  接纳另外一个数组 
merge  和另一个数组合并,重复的项将被替代。 
include  把给出的元素纳入本数组。 
getRandom  在数组中随机选择一个项 
getLast  返回数组中最后一个项 

基本上够用了,不过用到的地方实在不多。
6 楼 Hooopo 2009-10-12  
以上纯属这两个星期以来使用js的感受..
5 楼 Hooopo 2009-10-12  
yuan 写道
hooopo 写道
当然ruby自带的each map是很方便的..
[1,2,3].each{|i| puts i}


JavaScript1.6 (FF、Chrome)的数组也有这个:

javascript:[1,2,3,4,5].forEach(function(item, index, arr){alert('['+arr+']:'+index+'='+item)});void(0);

还提供了一个Array.forEach,一般用于操作类似数组的对象,比如arguments。
function iterateArgument(){
 Array.forEach(arguments, function(arg, index, args){
  alert(args+':'+index+'='+arg);
 });
}

iterateArgument(1,2,3,4);
iterateArgument('a',2,true);

还有跨浏览器的问题..想要写出好的js代码必须要熟悉各大浏览器的一些东东..
4 楼 Hooopo 2009-10-12  
全冠清 写道
Array.prototype.each=function(fun){
			for(var i=0;i<this.length;i++){  
                fun(i,this[i])
			} 
		}
		var array=[1,2,3]
		array.each(function(m,n){
			alert(m+":"+n)
		})

这样写貌似更像block..

这样写的话就更OO一些了..不过还是要自己加..很麻烦,js让人不爽的地方就是屁大点的功能都要自己写,感觉回到了c时代...而ruby内建了很多常用的方法,你想要什么就有什么.比如这些:
 Enumerable(all?, any?, collect, detect, each_cons, each_slice,
 each_with_index, entries, enum_cons, enum_slice, enum_with_index,
 find, find_all, grep, include?, inject, inject, map, max, member?,
 min, partition, reject, select, sort, sort_by, to_a, to_set, zip)


还有这些:
Instance methods:
-----------------
     &, *, +, -, <<, <=>, ==, [], []=, abbrev, assoc, at, clear,
     collect, collect!, compact, compact!, concat, dclone, delete,
     delete_at, delete_if, each, each_index, empty?, eql?, fetch, fill,
     first, flatten, flatten!, frozen?, hash, include?, index, indexes,
     indices, initialize_copy, insert, inspect, join, last, length, map,
     map!, nitems, pack, pop, pretty_print, pretty_print_cycle, push,
     quote, rassoc, reject, reject!, replace, reverse, reverse!,
     reverse_each, rindex, select, shift, size, slice, slice!, sort,
     sort!, to_a, to_ary, to_s, to_yaml, transpose, uniq, uniq!,
     unshift, values_at, yaml_initialize, zip, |


3 楼 yuan 2009-10-12  
hooopo 写道
当然ruby自带的each map是很方便的..
[1,2,3].each{|i| puts i}


JavaScript1.6 (FF、Chrome)的数组也有这个:

javascript:[1,2,3,4,5].forEach(function(item, index, arr){alert('['+arr+']:'+index+'='+item)});void(0);

还提供了一个Array.forEach,一般用于操作类似数组的对象,比如arguments。
function iterateArgument(){
 Array.forEach(arguments, function(arg, index, args){
  alert(args+':'+index+'='+arg);
 });
}

iterateArgument(1,2,3,4);
iterateArgument('a',2,true);
2 楼 全冠清 2009-10-11  
Array.prototype.each=function(fun){
			for(var i=0;i<this.length;i++){  
                fun(i,this[i])
			} 
		}
		var array=[1,2,3]
		array.each(function(m,n){
			alert(m+":"+n)
		})

这样写貌似更像block..
1 楼 全冠清 2009-10-11  
$.each???

相关推荐

    Data Types and block structure

    1. **函数(Function)**:将一段完成特定功能的代码封装为函数,使得代码可以重复使用并且更易于管理和测试。 2. **循环(Loop)**:通过循环结构重复执行某段代码直到满足特定条件为止,常见的循环有 `for` 循环和...

    LabVIEW Function and VI Reference Manual.pdf

    - **程序框图(Block Diagram)**:VI的后端编程部分,用户在此处放置和连接函数以实现特定的功能。 - **图标和连接器(Icons and Connectors)**:VI的图标表示以及与其他VI交互的接口。 ### 参考手册内容概览 该参考...

    Offline Application Block

    The Offline Application Block serves as a model for developers who want to extend their smart client applications to function while offline. It demonstrates possible approaches for: ●Detecting the ...

    西门子PLC例程- block that locks alarms and swaps byte.zip.zip

    西门子PLC支持多种编程语言,如Ladder Diagram (LD),Structured Text (ST),Function Block Diagram (FBD),和Sequential Function Chart (SFC)等。这个例程可能采用其中一种或多种语言编写,具体取决于其复杂性和...

    Digital and Analogue Communication Systems 2012.

    Parseval’s Theorem and Energy Spectral Density, 49 Dirac Delta Function and Unit Step Function, 52 Rectangular and Triangular Pulses, 55 Convolution, 60 2–3 Power Spectral Density and ...

    S-function用户手册

    An S-function is a computer language description of a Simulink block written in MATLAB®, C, C++, or Fortran. C, C++, and Fortran S-functions are compiled as MEX files using the mex utility (see ...

    深入理解Ruby中的block概念

    First-class function and Higher-order function First-class function 和 Higher-order function 是函数式编程语言里面的概念,听起来好像很高端的样子,其实很很简单的。 First-class functions 是指在某些语言里...

    Seamless R and C++ Integration with Rcpp

    It is being used for anything from small and quickly constructed add-on functions written either to fluidly experiment with something new or to accelerate computing by replacing an R function with its...

    论文研究-On Function Period and Coding-Alphabet Cardinality of Genetic Algorithms.pdf

    本文主要探讨了遗传算法的编码元数(coding alphabet cardinality)与函数周期(function period)之间的关系,并比较了不同编码元数的遗传算法在处理单周期函数和多周期函数时的优化效果。研究建立了一个基于一阶...

    The C programming Language(chm格式完整版)

    Pointers and Function Arguments Pointers and Arrays Address Arithmetic Character Pointers and Functions Pointer Arrays; Pointers to Pointers Multi-dimensional Arrays Initialization of Pointer ...

    M340 Click and Start.zip

    使用STEP 7 Professional进行M340 PLC编程,该软件支持Ladder Logic(梯形图)、Structured Text(结构化文本)、Function Block Diagram(功能块图)和Sequential Function Chart(顺序功能图)等多种编程语言,...

    IMAGE and VIDEO COMPRESSION for MULTIMEDIA ENGINEERING Fundamentals, Algorithms, and Standards.part1.rar

    Rate Distortion Function of Video Signal 15.3 Digital Video Formats 15.4 Current Status of Digital Video/Image Coding Standards 15.5 Summary 15.6 Exercises References Chapter 16 ...

    CANape_SimulinkXCPServer_AutomobilElektronik_200908_PressArticle_EN

    eterized either directly in the function block with a numeric value or by defining a parameter and its value on the MATLAB console. To modify an existing parameterization, the same steps are ...

    Error Correction coding——mathematical methods and algorithms

    Error Correction Coding - Mathematical Methods and Algorithms (Source Files Contained).pdf Error Correction Coding Mathematical Methods and Algorithms Todd K. Moon Utah State University @ E ! C I E N...

    Atitit.js的键盘按键事件捆绑and事件调度

    function bindEvent_4_dataBlock() { var arr=$("#table1 li"); arr.each(function(index, element) { $(element).keypress(function(){ alert&#40;'keypress'&#41;; }); var id="data_aid_"+index; $(element).attr...

    winof.tar.bz2

    Support high-performance block storage applications utilizing RDMA benefits Cloud and virtualization: NVGRE and VxLAN Hardware offload (ConnectX-3 Pro and ConnectX-4) SR-IOV Function per-port (Connect...

    MEBMA.rar_EBMA mat_MATLAB movie_block matching_full search_motio

    MEBMA (Motion Estimation (ME) Block Matching algorithm) compute various complexity and distortion parameters for given movie (.mat format) in either HBMA (multy resolution) or EBMA (full search) Block...

Global site tag (gtag.js) - Google Analytics