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
随机推荐
- yum保留安装包方法,以及存放路径
修改/etc/yum.conf里面的参数keepcache,从0改为1. 安装包保存在/var/cache/yum文件夹下
- intellij idea 为JavaEE项目建立Servlet
建立Servlet的方法 顶部菜单栏 View > Tool Windows > Web. 然后互相web窗口 右键Web>new>Servlet 弹出窗口
- [BZOJ5462][APIO2018]新家(线段树+堆)
其实这个题第一反应一定是线段树分治,但是这样反而更难考虑了(实际上是可做的但很难想到),可见即使看上去最贴切的算法也未必能有效果. 考虑这个DS题,没有什么模型的转化,可能用到的无非就是线段树.平衡树 ...
- POJ 2112 Optimal Milking(二分图匹配)
[题目链接] http://poj.org/problem?id=2112 [题目大意] 给出一些挤奶器,每台只能供给M头牛用,牛和挤奶器之间有一定的距离 现在要让每头牛都挤奶,同时最小化牛到挤奶器的 ...
- 1.5(Spring MVC学习笔记) 拦截器(Interceptor)
一.拦截器 1.1拦截器简介 Spring中的拦截器类似Servlet中的过滤器(Filter),主要用于拦截用户请求, 并进行一定的处理操作(如验证权限.记录日志.设置编码方式等). 1.2拦截器实 ...
- Exercise02_07
import javax.swing.JOptionPane; public class Years { public static void main(String[] args){ String ...
- Scala零基础教学【90-101】Akka 实战-代码实现
第90讲:基于Scala的Actor之上的分布式并发消息驱动框架Akka初体验 akka在业界使用非常广泛 spark背后就是由akka驱动的 要写消息驱动的编程模型都首推akka 下面将用30讲讲解 ...
- 定时任务-crontab
一.crond简介 crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动c ...
- Delphi 使窗体Showmodal后可以操作其他窗体
对话框ShowModal之后不能操作其它窗口,实际上是因为Windows Disable了其它窗口.所以当你需要在模态对话框中访问其它已经可见的窗口时,需要用EnableWindow API来激活对应 ...
- linux如何启动/停止/重启MySQL
如何启动/停止/重启MySQL 一.启动方式 1.使用 service 启动:service mysqld start2.使用 mysqld 脚本启动:/etc/inint.d/mysqld star ...