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. 机器人搬重物(BFS)

    机器人搬重物 时间限制: 1 Sec  内存限制: 128 MB提交: 22  解决: 10[提交][状态][讨论版] 题目描述 机 器人移动学会(RMI)现在正尝试用机器人搬运物品.机器人的形状是一 ...

  2. 7、Flask实战第7天:Jinjia2模板

    Jinja2模板介绍和查找路径 在前面的章节中,视图只是直接返回文本,然而在实际生产环境中其实很少这样用,因为实际的页面大多带有样式和复杂逻辑的HTML代码,这可以让浏览器其渲染出非常漂亮的页面. 我 ...

  3. [CTSC2017]最长上升自序列(伪题解)(Dilworth's theorem+网络流)

    部分分做法很多,但每想出来一个也就多5-10分.正解还不会,下面是各种部分分做法: Subtask 1:k=1 LCS长度最长为1,也就是说不存在j>i和a[j]>a[i]同时成立.显然就 ...

  4. 【计算几何】 Codeforces Beta Round #67 (Div. 2) E. Ship's Shortest Path

    读懂题意其实是模板题.就是细节略多. #include<cstdio> #include<cmath> #include<algorithm> using name ...

  5. 【数论】【筛法求素数】CODEVS 1462 素数和

    好吧……我不会欧拉筛也就罢了…… 傻逼筛法竟然这么长时间以来 一直RE ……源头竟然是 int 爆了. #include<cstdio> #include<algorithm> ...

  6. React Native 让组件做到局部刷新

    利用RN的状态机机制,我们可以通过this.setState({optional:...})来控制界面的刷新,但是一定会触发render方法,那如何保证不调用render方法从而做到界面的局部刷新呢? ...

  7. JavaScript对JSON数据进行排序

    var ajson= { "result":[ { "cid":1, "name":"aaa", "price ...

  8. 解决Ubuntu 14下,PhpStorm 9.x 编辑器界面中文乱码的问题

    在Ubuntu 14中,安装了 PhpStorm 9.02,发现 软件界面中文乱码,但是源码编辑处却显示正常,如下图所示: 很奇怪,猜想,应该是软件界面字体有问题,选了一个没有包含中文字体的字体.先前 ...

  9. Linux中线程的挂起与恢复(进程暂停)

    http://www.linuxidc.com/Linux/2013-09/90156.htm 今天在网上查了一下Linux中对进程的挂起与恢复的实现,相关资料少的可怜,大部分都是粘贴复制.也没有完整 ...

  10. 一个简单的假vue全家桶(vue+vue-router+require)

    首先说明我觉得这是一个比较好理解的vue全家桶(虽然是假的),模块化也是用require来做的,而且如果后期有必要压缩我也会用gulp来做 1.依赖个个本地模块,require只是用来载入page,这 ...