atitit.复合变量,也就是类似$$a的变量的原理与实现 java c#.net php js
atitit.复合变量,也就是类似$$a的变量的原理与实现 java c#.net php js
1.1. 复合变量,也就是类似$$a的变量,它会进行两次的解释。 1
1.3. 为什么只有php实现了符合变量,因为他的美元符号2
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
随机推荐
- 13、Django实战第13天:分页列表功能
我们看课程 机构列表页是需要分页的 为了完成分页功能,我们需要用到Django的一个开源开发库django-pure-pagination workon mxonline pip install dj ...
- BigDecimal不整除异常
通过BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常的 异 常 :java.lang.ArithmeticException: Non-terminatin ...
- POJ 3622 Gourmet Grazers(贪心)
[题目链接] http://poj.org/problem?id=3622 [题目大意] 给出一些物品拥有两个属性值,价格和精美程度 给出一些需求表示要求获得的物品两个属性值的两种属性下界, 一个物品 ...
- 【数论】【筛法求素数】CODEVS 1462 素数和
好吧……我不会欧拉筛也就罢了…… 傻逼筛法竟然这么长时间以来 一直RE ……源头竟然是 int 爆了. #include<cstdio> #include<algorithm> ...
- mac Nginx + FastCgi + Spawn-fcgi + c++
1.安装要用到的库 brew install lighttpd brew install nginx brew install Spawn-fcgi //----------------------- ...
- SpringMVC(流程+第一个Demo)
一.流程图 用户发送请求至前端控制器DispatcherServlet DispatcherServlet收到请求调用HandlerMapping处理器映射器. 处理器映射器根据请求url找到具体的处 ...
- Android之Activity 生命周期
作用:用户界面的组件,主要用于和用户进行交互.可以理解为手机屏幕的一屏. 生命周期: Resume:“继续”的意思. 由此可见, Activity有四种基本状态: 1) Running:位于屏幕最前端 ...
- Shell中 调用/引用/包含 另外的脚本文件的两种方法
脚本 first (测试示例1) #!/bin/bash echo 'your are in first file' 问)在当前脚本文件中调用另外一个脚本文件? 方法一: 使用 source 脚本 s ...
- Inno Setup入门(十三)——Pascal脚本(2)
事件函数(2) function CheckPassword(Password: String): Boolean; 如果安装程序在Pascal 脚本中发现该函数,它自动显示密码页并调用CheckPa ...
- Texygen文本生成,交大计算机系14级的朱耀明
文本生成哪家强?上交大提出基准测试新平台 Texygen 2018-02-12 13:11测评 新智元报道 来源:arxiv 编译:Marvin [新智元导读]上海交通大学.伦敦大学学院朱耀明, 卢思 ...