foo

smarty中foreach的用法

安稳与你 提交于 2020-03-01 02:32:07
{foreach},{foreachelse} {foreach} 用于像循环访问一个数字索引数组一样循环访问一个关联数组,与仅能访问数字索引数组的{section}不同,{foreach}的语法比 {section}的语法简单得多,但是作为一个折衷方案也仅能用于单个数组。每个{foreach}标记必须与关闭标记{/foreach}成对出现。 属性 1、 from 类型:array数组 必要性:Yes必要默认值:n/a 描述:循环访问的数组 2、 item 类型:string字符串 必要性:Yes必要 默认值:n/a 描述:当前元素的变量名 3、 key 类型:string字符串 必要性:No可选 默认值:n/a 描述:当前键名的变量名 4、 name 类型:string字符串 必要性:No可选 默认值:n/a 描述:用于访问foreach属性的foreach循环的名称 from和item是必要属性 {foreach}循环的name可以是任何字母,数组,下划线的组合,参考PHP变量。 {foreach}循环可以嵌套,嵌套的{foreach}的名称应当互不相同。 from属性通常是值数组,被用于判断{foreach}的循环次数。 在from变量中没有值时,将执行{foreachelse}。 {foreach}循环也有自身属性的变量,可以通过{$smarty.foreach.name

JavaScript参数按值传递

南笙酒味 提交于 2020-02-28 16:49:37
JavaScript参数按值传递 ECMAScript中所有函数的参数都是按值传递 什么是按值传递呢? 也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。 var value = 1 function foo(value){ value = 2 console.log(value) // 2 } foo(value) console.log(value) // 1 当传递value到函数foo中,相当于拷贝了一份value,假设拷贝的这份叫_value,函数中修改的都是_value的值,而不会影响原来的value的值 引用传递? 如果值是一个复杂的数据结构,拷贝(值传递)就是产生性能影响 引用传递,就是传递对象的引用,函数内部对参数的任何改变都会影响原有对象的值,因为两者引用的是统一地址。 var obj = { value : 1 } function foo(obj){ obj.value=2 console.log(obj.value)// 2 } foo(obj) console.log(obj.value)// 2 上面说了ECMAScript中所有函数的参数都是按值传递,怎么能按引用传递成功呢 共享传递 var obj = { value : 1 } function foo(obj){ obj = 2 console.log(obj

python 3.x函数装饰器

China☆狼群 提交于 2020-02-27 13:24:16
函数对象在被调用时,函数装饰器将会起作用: from time import ctime,sleep def tsfunc(func): def wrappedFunc(): print('[%s] %s() called'% (ctime(),func.__name__)) return func() return wrappedFunc @tsfunc def foo(): pass foo() sleep(4) for i in range(2): sleep(1) foo() 运行结果: [Thu Feb 27 11:14:04 2020] foo() called [Thu Feb 27 11:14:09 2020] foo() called [Thu Feb 27 11:14:10 2020] foo() called 来源: CSDN 作者: 零度香 链接: https://blog.csdn.net/u011837138/article/details/104532538

python的metaclass浅析-乾颐堂

爷,独闯天下 提交于 2020-02-26 07:57:40
元类一般用于创建类。在执行类定义时,解释器必须要知道这个类的正确的元类。解释器会先寻找类属性__metaclass__,如果此属性存在,就将这个属性赋值给此类作为它的元类。如果此属性没有定义,它会向上查找父类中的__metaclass__.如果还没有发现__metaclass__属性,解释器会检查名字为__metaclass__的全局变量,如果它存在,就使用它作为元类。否则, 这个类就是一个传统类,并用 types.ClassType 作为此类的元类。 在执行类定义的时候,将检查此类正确的(一般是默认的)元类,元类(通常)传递三个参数(到构造器): 类名,从基类继承数据的元组,和(类的)属性字典。 元类何时被创建? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #!/usr/bin/env python print '1. Metaclass declaration' class Meta( type ): def __init__( cls , name, bases, attrd): super (Meta, cls ).__init__(name,bases,attrd) print '3. Create class %r' % (name) print '2. Class Foo

YAML格式

走远了吗. 提交于 2020-02-22 19:35:48
转载:https://www.cnblogs.com/wxmdevelop/p/7341292.html YAML 的意思其实是:"Yet Another Markup Language"(仍是一种置标语言)的缩写。 功能 YAML的语法和其他高阶语言类似,并且可以简单表达清单、散列表,标量等资料形态、。 它使用 空白符号缩排 和 大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种设定档、倾印除错内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。 尽管它比较适合用来表达阶层式(hierarchical model)的数据结构,不过也有精致的语法可以表示关联性(relational model)的资料。 由于YAML使用空白字符和分行来分隔资料,使的他特别适合用 grep、Python、Perl、Ruby 操作。 其让人最容易上手的特色是巧妙避开各种封闭符号,如:引号、各种括号等,这些符号在嵌套结构中会变得复杂而难以辨认。 格式 多行缩进 数据结构可以用类似大纲的缩排方式呈现,结构通过 缩进 来表示,连续的项目通过 减号“-” 来表示,map 结构里面的 key/value 对用冒号“:”来分隔。样例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 house: family: name: Doe parents: - John -

apply、call和bind的区别

南楼画角 提交于 2020-02-22 00:56:08
   apply的call的区别   其实很简单,两者的区别就在于调用时的参数不一样。看一下代码: 1        var i = 40; 2 3 var a = { 4 i : 20, 5 foo : function () { 6 var i = 10; 7 return this.i; 8 }, 9 foo1 : function (param1, param2) { 10 return param1 + param2 + i; 11 } 12 } 13 14 var b = { 15 i : 5 16 } 17 18 console.log(a.foo()); //20 19 console.log((a.foo)()); //20 20 console.log((a.foo,a.foo)()); //40 21 console.log(a.foo.apply(window)); //40 22 console.log(a.foo.apply(a)); //20 23 console.log(a.foo.apply(a.foo)); //undefinded 24 console.log(a.foo1.apply(b, [2, 1])); //43 25 console.log(a.foo1.call(b, 2, 1)); //43   很显然

变量的作用域

有些话、适合烂在心里 提交于 2020-02-20 03:04:22
No.1 <script language="javascript"> var var00 = 0; document.write(var00 + '<br>'); var var01 = 1; function foo() { document.write(var01); var var01 = 1; } foo(); </script> 结果: 0 undefined No.2 <script language="javascript"> var00 = 0; document.write(var00 + '<br>'); var01 = 1; function foo() { document.write(var01); var01 = 1; } foo(); </script> 结果: 0 1 No.3 <script language="javascript"> var00 = 0; document.write(var00 + '<br>'); var01 = 1; function foo() { document.write(var01); var var01 = 1; } foo(); </script> 结果: 0 undefined 原来JavaScript的变量也是有作用域的,只是它非常的笼统,就分为全局变量和函数变量。在第二个例子中得到0和1

bitset用法

旧街凉风 提交于 2020-02-10 20:32:05
头文件:#include <bitset> bitset类型在定义时就需要指定所占的空间,例如 bitset<233>bit; bitset类型可以用string和整数初始化(整数转化成对应的二进制) int main() { bitset<23>bit (string("11101001")); cout<<bit<<endl; bit=233; cout<<bit<<endl; return 0; } /* 00000000000000011101001 00000000000000011101001 */ bitset支持所有的位运算 bitset<8> foo ("10011011"); cout << foo.count() << endl;  //5  (count函数用来求bitset中1的位数,foo中共有5个1 cout << foo.size() << endl;   //8  (size函数用来求bitset的大小,一共有8位 cout << foo.test(0) << endl;  //true  (test函数用来查下标处的元素是0还是1,并返回false或true,此处foo[0]为1,返回true cout << foo.test(2) << endl;  //false  (同理,foo[2]为0,返回false cout << foo.any()

【ES6】Class

牧云@^-^@ 提交于 2020-02-10 00:59:22
以前类我们通过构造函数 function Point(x, y) { this.x = x; this.y = y; } Point.prototype.toString = function () { return '(' + this.x + ', ' + this.y + ')'; }; var p = new Point(1, 2); ES6可以通过class,完全可以看做构造函数的另一种写法 class Point { constructor(x, y) { this.x = x; this.y = y; } toString() { return '(' + this.x + ', ' + this.y + ')'; } } typeof Point // "function" Point === Point.prototype.constructor // truelet point = new Point(2,3) 构造函数的 prototype 属性,在 ES6 的“类”上面继续存在。事实上,类的所有方法都定义在类的 prototype 属性上面。 class Point { constructor() { // ... } toString() { // ... } toValue() { // ... } } // 等同于 Point.prototype =

Ruby学习笔记-Block, Proc and Lambda

你。 提交于 2020-02-09 11:14:10
1.Block:   Ruby中的块就是由多行代码组成的一个代码块,通常可以把它认为是一个匿名方法,常用来迭代一个数组或范围(如 each , times 方法);语法格式如下:   {   //code   } OR   do   //code   end   块变量:当创建一个块时,在两个竖线之间(如: | i |)被称作块变量,作用和一个正常方法的参数一样;如:5.each{| x | puts x } 2.Block and Array Block常用来迭代数组,上面也提到过,所以数组中也定义了很多方法接受块参数;常用的有:   collect :该方法把数组的每一个元素传给块并返回一个新的包括所有元素的数组,原数组的值不变。如果使用collect!方法刚会修改原数组的值;   each :each方法和collect方法有点类似,会把数组的每个元素的值传递给块,但和collect不同的是,each方法不会创建一个新的包含返回值的数组;没有each!方法; 例:   a = [1,2,3]   b = a.collect{|x| x*2}   puts("-a-")   puts a   puts("-b-")   puts b   c = a.collect!{|x| x*2}   puts("-a-")   puts a --------------result----