1. 程式人生 > >lua程式語言裡面的小括號,中括號,大括號怎麼用,或者說在哪些地方要用括號?

lua程式語言裡面的小括號,中括號,大括號怎麼用,或者說在哪些地方要用括號?

小括號--函式引數
中括號--table元素序號;多行文字
大括號--定義table時使用

大括號 用於單元陣列的賦值
中括號 用於形成一個向量或矩陣
小括號 通常用於一般的算術表示式,指示優先運算,還用於表示函式變數、向量下標和矩陣下標等到

矩陣賦值

這個很重要!
matlab的‘=’是直接分配新的空間的。然而,torch為了加快速度。直接用’=’對於Tensor來說是不分配空間的,它只是一個引用而已,或者說是別名!
matlab : matOut = matIn
Torch: matOut = matIn:clone()
clone和copy沒啥區別,只是copy寫的時候比較麻煩,就用clone好了

lua中"#" 意思

取表(table)中元素的個數。

比如tags[#tags+1]=tag
還有好多變數前有#號,這是什麼意思啊

一般來說是獲得一個table的長度(即元素數),但這個操作符實際上陷阱很多
#的實際作用是獲得一個table中最大的數字鍵值,比如:
t = {"a", "b", "c", "d"}
#t --輸出是4
而tags[#tags+1]=tag就是一個常見的用法,在tags這個table的末端插入一個新元素tag
但由於上面說的,#僅對鍵值連續的數值鍵值有效,因此
1、當鍵值為字串等其他型別時,該操作符返回的值無法確認,比如
t = { x = "a", y = "b", z = "c"}
#t --輸出是0
2、當鍵值為數值但不連續時,比如:
t = {"a", "b", "c"}
#t -- 同第一個範例,此時正常為3
t[5] = "e"
#t --此時輸出依然為3,因為t[4]為nil,計數到3處停止

綜上,如果你的table是純粹當一個連續的陣列在用,那麼#t是很方便的獲得table長度的方法;但如果你的table中key的數值不連續,或者有其他型別的key那麼還是不要指望#能給出多有意義的結果來……

用”{ }”來提取

上面的用函式的方式可能還是有點兒麻煩。matlab有類似(:, : ,1:2)的寫法。那麼lua呢?
語法:
1. [ {dim1 , dim2, …} ]來獲取某些維度。類似select
2. [ { {dim1s, dim1e}, {dim2s, dim2e},… } ] 來進行類似narrow或是sub的裁剪。

x = torch.Tensor(5,6):zero()
x[{1,3}] = 1 --等價於matlab的 x(1,3) = 1
x[ {2, {2,4}} ] = 2 --等價於matlab的 x(2,2:4) = 2
x[ { {}, 4}] = -1 --等價於matlab的 x(:,4) = -1

相關推薦

lua程式語言裡面括號括號括號怎麼或者說在哪些地方括號

小括號--函式引數 中括號--table元素序號;多行文字 大括號--定義table時使用 大括號 用於單元陣列的賦值 中括號 用於形成一個向量或矩陣 小括號 通常用於一般的算術表示式,指示優先運算,還用於表示函式變數、向量下標和矩陣下標等到 矩陣賦值 這個很重

C語言INT64型別和GCC的long long的定義及sprintf格式字串的定義

d,lx,ld,,lu,這幾個都是輸出32位的 hd,hx,hu,這幾個都是輸出16位資料的, hhd,hhx,hhu,這幾個都是輸出8位的, lld,ll,llu,llx,這幾個都是輸出64位的, printf( "%llu ",.....) %llu  是64位無符號 %llx才是64位16進位制數

JAVA操作CLOB對象 提示ORA-01704字符串文字太長

CLOB ORACEL java 分析:在ORACEL中大文本的不能直接插入,是因為oracle會將clob自動轉為String,當文本字節超出4000字節,提示字符太長。備註: GBK編碼:一個漢字占兩個字節。 UTF-16編碼:通常漢字占兩個字節,CJKV擴展B區、擴展C區、擴展D區中的漢字占

建立一棵二叉樹連結串列方式儲存的二叉樹並對其進行遍歷(先序序和後序)列印輸出遍歷結果

題目如下 程式碼如下 #include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct Node//結構體 {

找陣列絕對值最的數並保留規定的小數點數

#include using namespace std; #include<math.h> #include float date[8] = { -200.1,-40.5,80,99.367,0,-778.354,666,454.235 }; in

求一個數組第k的數要求不能另外申請空間陣列順序不能被改變

這是一道今日頭條的面試題,當面試官提出這樣一道題目時。我想相信,大多數人都會這樣反應 1.是不是可以先排一下序,然後再求第k大的,然後就想到陣列順序不能被改變,然後否定了 2.是不是可以用小堆來做。我建立一個堆大小為k的小堆,然後把這些資料全部扔進小堆中,除了堆頂,其他的數

在由N個正整數的集合S找出最元素C滿足C=A + B

其中A,B都是集合S中元素,請給出演算法描述,程式碼與時間複雜度分析. int findNum(vector<int> &S) { sort(S.begin(), S.end()); int n = S.size(); for (

c++賦值運算符重載為什麽引用做返回值?

font round opera () const pub copy構造函數 per size class string{ public: string(const char *str=NULL); string(const string& str);

Java數值較的double型別轉換為字串時會科學計數法不使用千分位顯示的解決辦法

java.text.NumberFormat nf = java.text.NumberFormat.getInstance(); // 不使用千分位,即展示為11672283.234,而不是11,672,283.234 nf.setGroupingUsed(false); // 設

如何解決高版本Google Chrome(谷歌瀏覽器)擴充套件程式強制停問題?或者經常提示停擴充套件程式

如何解決高版本Google Chrome(谷歌瀏覽器)擴充套件程式強制停用問題? 1. 本文預設已經會新增第三方外掛,會出現每次開啟瀏覽器提示停用或者讓你去關閉提示; 2. 首先:

比較兩個字串的大小並顯示最的字串如果兩個字串相同則顯示第一個

  #include <stdio.h> char *fun (char *s, char *t) {  int i=0,j=0;     while(*s++)i++;     while(*t++)j++;     if(i-j>=0)return s

python括號括號括號的區別

.com title htm targe 表示 url pos lan itl python中,花括號,中括號,小括號的區別 Python主要有三種數據類型:字典、列表、元組。其分別由花括號,中括號,小括號表示。 如: 字典:dic={‘a‘:12,‘b‘:34} 列表:l

不需要安裝任何開發環境在瀏覽器裡面就能線上練習31種程式語言

如果有一天心血來潮,想試試和看看新的語言如何使用,總不可能每個開發環境都裝一套吧,而且有的開發環境還不太好裝,而且必須在特定的裝置下面才能使用,比如蘋果(Apple)公司的Swift語言. 就有下面的程式語言: Asm BCPL Bash C (clan

雖然不在前三但是Python依舊程式語言的頭牌

Apple為自己的開發人員構建的iOS應用程式程式語言Swift開發人員現在是第10大最流行的程式語言,而Python已經退出TIOBE索引的前三名排名。 在9月,Python位於排行榜中Java和C之後,進入前三名,但該公司的10月份索引將Python排在第四位,僅次

演算法=邏輯+控制: 在邏輯式程式設計程式設計師只需表達邏輯而控制交給程式語言的直譯器或編譯器去管理

“邏輯式語言著眼於關係而非函式,對付這類問題正是它的拿手好戲。”冒號聲音逐漸高亢,“大家應該都聽說過等式‘演算法+資料結構=程式’吧?這是Pascal設計者Niklaus Wirth的一本著作的書名,它刻畫了過程式尤其是結構化程式設計的思想。後來Robert Kowalski進一步提出:演算法=邏輯+控制。其

微信程式教程、開發資源下載彙總(2.8日更新持續更新……)

實在不會玩這個編輯器,後面新增的demo也不知道怎麼加連線,得辛苦大家自己手動複製了http://www.jianshu.com/p/8c9dbf2bbf84 一、IDE 二、開發學習教程 教程系列一: 教程系列二:

在微信程式實現時間日期的選擇並且顯示當前選擇的時間日期

<!--時間選擇器 --> <view class=''>選擇時間></view> <picker mode="time" value='{{time

Python的括弧括號括號的區別

python語言最常見的括號有三種,分別是:小括號( )、中括號[ ]和大括號也叫做花括號{ }。其作用也各不相同,分別用來代表不同的python基本內建資料型別。1、python中的小括號( ):代表tuple元組資料型別,元組是一種不可變序列。建立方法很簡單,大多時候都是

C語言:從鍵盤輸入10個數存入一維陣列求這10個數的最值和最值並輸出

題目:從鍵盤輸入10個數存入一維陣列,求這10個數中的最大值和最小值並輸出。 下面是我寫的程式,我用visual studio 2010編譯通過,執行正常。 源程式程式碼如下: #include "stdio.h" //從鍵盤輸入10個數存入一維陣列,求這10個數中的

bash:單引號雙引號反引號``括號括號括號的區別

( ) 把 command group 放在subshell去執行,也叫做 nested sub-shell。{ } 則是在同一個 shell 內完成,也稱為 non-namedcommand group。所以說,如果在shell裡面執行“函式”,需要用到{},實際上也就是一個命令群組麼。不過,根據實測,te