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
随机推荐
- 6、Flask实战第6天:视图函数Response返回值
视图函数的返回值会被自动转换为一个响应对象,Flask的转换逻辑如下: 如果返回的是一个合法的响应对象,则直接返回 可以使用make_response函数来创建Response对象,这个方法可以设置额 ...
- [Baltic2003] Gem
[Baltic2003]Gem Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 501 Solved: 320[Submit][Status][Discu ...
- 【前缀和】【前缀MAX】洛谷 P1351 NOIP2014提高组 day1 T2 联合权值
不难发现,树中与某个点距离为2的点只可能是它的父亲的父亲.儿子的儿子 或者 兄弟,分类讨论一下即可. 只有对于兄弟我们不能暴力搞,维护一下每个节点的所有儿子的前缀和.前缀MAX就行了. #includ ...
- python3-开发面试题(python)6.24基础篇(3)
1.用一行代码实现数值交换: a = 1 b = 2 a,b=b,a 2.Python3和Python2中 int 和 long的区别? long整数类型被Python3废弃,统一使用int ...
- openresty的ngx.timer.at
openresty的ngx.timer.at真是个强大的方法. 例如某些函数不可以在一些NGINX的执行阶段使用时,可以ngx.timer.at API 创建一个零延迟的timer,在timer中去处 ...
- yum出现的“UnicodeDecodeError: 'ascii' codec”问题解决
新装了CentOS 6.5系统,打算使用yum安装程序是出现了如下错误: Loading mirror speeds from cached hostfile Traceback (most rece ...
- 关于DNS,你应该知道这些
在互联网时代中,如果要问哪个应用层协议最重要的话,我想答案无疑是DNS.虽然我们每天都享受着DNS服务带来的便利, 却对它往往知之甚少.因此本文就来介绍一下DNS协议的工作流程,真正认识一下这个支撑着 ...
- Matlab设置形状大小
x=0:10; y=2*x; plot(x,y,'-*','linewidth',0.5,'markersize',6)%%默认线宽为0.5,点大小为6 说明:调整线宽也可改变点的形状,这实际上是通过 ...
- React Conf 2017 干货总结 1: React + ES next = ♥
React Conf 2017在加利福尼亚州的圣克拉拉万豪酒店圆满落幕,这已经是Facebook举办的第三届React官方大会了.虽然不能参会,但是作为前端开发者,我们当然不能错过这个绝佳的学习契机. ...
- 《新一代视频压缩码标准-H.264_AVC》读书笔记1
摘要 第一章 绪论 正文 1.一般而言,视频信号信息量大,传输网络所需要的带宽相对较宽.例如,一路可视电话或会议电视信号,由于其活动内容较少,所需带宽较窄,但要达到良好质量,不压缩约需若干 Mbps, ...