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. 30、Django实战第30天:修改邮箱和用户信息

    修改个人邮箱需要完成两个接口,一个是获取验证码,一个是新的邮箱和验证码是否匹配 1.编辑users.views.py class SendEmailCodeView(LoginRequiredMixi ...

  2. [BZOJ 1407] Savage

    Link:https://www.lydsy.com/JudgeOnline/problem.php?id=1407 Solution: 由于此题里n的范围很小,因此可以直接从小到大枚举m 那么问题转 ...

  3. POJ 2975 Nim(博弈论)

    [题目链接] http://poj.org/problem?id=2975 [题目大意] 问在传统的nim游戏中先手必胜策略的数量 [题解] 设sg=a1^a1^a3^a4^………^an,当sg为0时 ...

  4. POJ 2079 Triangle (凸包+旋转卡壳)

    [题目链接] http://poj.org/problem?id=2079 [题目大意] 给出一些点,求出能组成的最大面积的三角形 [题解] 最大三角形一定位于凸包上,因此我们先求凸包,再在凸包上计算 ...

  5. Spark机器学习:TF-IDF实例讲解

    测试数据源:20 Newsgroups (http://qwone.com/~jason/20Newsgroups/),其中包含20个领域的新闻,此次我们使用20news-bydate-train作为 ...

  6. U盘安装Ubuntu 16.04出现:Failed to load ldlinux.c32

    启动的时候如果不开启UEFI,则会提示: Failed to load ldlinux.c32 Boot failed: please change disks and press a key to ...

  7. VMware虚拟机中为Linux 添加虚拟硬盘(VirtualBox方法类似)

    修改1:2014-06-24 11:38:21 Linux添加硬盘是在原来安装的硬盘空间不够或者需要使用其他硬盘上的东西时候的解决办法,因为大多数初学者习惯使用虚拟机,这里以在Vmware虚拟机中实现 ...

  8. vs 代理登入

    https://msdn.microsoft.com/zh-cn/vstudio/dn771556.aspx

  9. nobr 不换行标签

    示例代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...

  10. touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

    问题:在从 https://c.163.com/hub#/m/repository/?repoId=3093 下载镜像 docker pull hub.c.163.com/library/jenkin ...