atitit.复合变量,也就是类似$$a的变量的原理与实现 java c#.net php js

1.1. 复合变量,也就是类似$$a的变量,它会进行两次的解释。 1

1.2. 数据库里面的复合变量1

1.3. 为什么只有php实现了符合变量,因为他的美元符号2

1.4. 符合变量的本质其实就是指针了2

2. 使用java实现符合变量2

2.1. invoke2

2.2. 实现2

3. 参考4

1.1. 复合变量,也就是类似$$a的变量,它会进行两次的解释。

这给PHP带来了非常灵活的动态特性。

1.2. 数据库里面的复合变量

记录(Record)

什么是记录:

记录是由几个相关值构成的复合变量,常用于支持SELECT语句的返回值。使用记录可以将一行数据看成是一个单元进行处理,而不必将每一列单独处理,和面向对象程序设计语言里面的对象或者C语言的结构体类似。

PLSQL复合变量

复合变量指用于存放多个值的变量。定义复合变量时,必须要使用PL/SQL的复合数据类型。PL/SQL包括
PL/SQL记录、PL/SQL表、嵌套表及VARRAY等四种复合数据类型。

1.3. 为什么只有php实现了符合变量,因为他的美元符号

Dollar继承自perl。。。

Dollar也不是必须的。。只需要在使用的时候致命dollar就ok懒。。Not nessury  var must  dollar start。。

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

1.4. 符合变量的本质其实就是指针了

2. 使用java实现符合变量

2.1. invoke

import static aaa.VarUtil.*;

public class DynaVar {

public static void main(String[] args) {

def("$a","v_a");

def("$b", "a");

echo($("$b"));

echo($("$$b"));

}

2.2. 实现

package aaa;

import java.util.Map;

import com.attilax.lang.AString;

import com.google.common.collect.Maps;

public class VarUtil {

public static Map vars_map=Maps.newConcurrentMap();

/**

* //var use

* @param var_name

* @return

*/

public static Object $(String var_name) {

int dollarIndex=var_name.lastIndexOf("$");

if(dollarIndex==0)

return  vars_map.get(var_name);

String left=AString.Left(var_name, dollarIndex);

String rit=  var_name.substring(dollarIndex);

char[] a=left.toCharArray();

Object var_v= vars_map.get(rit);

for (int i = 0; i < a.length; i++) {

String new_var_name="$"+var_v.toString();

var_v=vars_map.get(new_var_name);

}

return var_v;

}

////var define

public static void def(String var_name, String var_val) {

vars_map.put(var_name, var_val);

}

public static void echo(Object get_var) {

System.out.println(get_var);

}

/**

* //var use

* @param var_name

* @return

*/

//public static Object $(String var_name) {

//// TODO Auto-generated method stub

//return vars_map.get(var_name);

//}

}

3.  参考

PLSQL复合变量与参照变量 - 蓝紫 - 博客园.htm

随机推荐

  1. centos7下mail邮件的查看删除、禁止部分应用发邮件

    查看与删除 mail命令进入 & p                  #显示当前邮件& 2                  #显示标号为2的文件 & d 1-100     ...

  2. Scala实战高手****第7课:零基础实战Scala面向对象编程及Spark源码解析

    /** * 如果有这些语法的支持,我们说这门语言是支持面向对象的语言 * 其实真正面向对象的精髓是不是封装.继承.多态呢? * --->肯定不是,封装.继承.多态,只不过是支撑面向对象的 * 一 ...

  3. cookie的secure、httponly属性设置

    cookie的secure.httponly属性设置 转载自:http://www.cnblogs.com/alanzyy/archive/2011/10/14/2212484.html 一.属性说明 ...

  4. 狗日的Javascript中的闭包

    前面的话: 闭包,是 javascript 中重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,你很难从定义去理解它.下面是作者从作用域链慢慢讲到 ...

  5. Jmeter调用Webapi介绍

    一.介绍     JMeter主要用于压力测试,使用Java编写,由Apache基金会管理     官方网站:http://jmeter.apache.org/index.html     下载地址: ...

  6. Shader and Program编程基本概念 - 转

    原地址:http://blog.csdn.net/myarrow/article/details/7737313 一.本文关注的问题: • Shader and program 对象介绍• 创建并编译 ...

  7. 打补丁以及WebLogic Server的版本

    12.1.2开始采用了Oracle传统的opatch打补丁的方式,但在此之前,包括 10.3.x版本以及12.1.1版本还是通过bea的smart update方式来进行. smart update基 ...

  8. python的dict如何排序

    Python的内置dictionary数据类型是无序的,通过key来获取对应的value.可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value来排 # ...

  9. Gitlab系列九之取消用户注册页面和删除用户

    一.取消用户注册页面 Admin Area--->Settings--->Sign-up enabled(取消前面的勾)---save 二.删除用户 Users----Destroy(点他 ...

  10. js 正则只允许小写字母、数字、点、中短划线

    正则表达式如下: /^[a-z0-9\.-]*$/g 可用如下语句验证: alert(/^[a-z0-9\.-]*$/g.test('abc123.45a-b')); //true alert(/^[ ...