為什麼很多程式語言中不能直接列印陣列?

時間 2021-05-31 11:49:13

1樓:丁長老

函式式語言不清楚,說點我知道的。

列印陣列需要有下面三個條件

1.陣列的長度

2.陣列中值的型別

3.陣列中值不存在迴圈引用

第一條陣列的長度,c語言就被乾掉了,c語言沒法獲取陣列的長度,其他語言,有容器功能的,或者單獨內建array類的,拿到長度不是問題。

第二條,陣列中值的型別。求型別就要求程式語言支援反射或者型別判斷。對大部分支援這個功能的程式語言來說,內建型別的判斷是不成問題的,但是使用者自定義型別判斷就不行了。

所以到了這一步,oop語言基本上已經全滅了。當然也可以無腦輸出,比如把所有的field轉成類似json的格式,通過序列化方式來轉文字,但限制依然在,不是所有的obj都有儲存值的field的。而JS因為是原型模型,沒有自定義類概念,反而能夠勝出。

第三條,迴圈引用,不算是特別麻煩的問題,可以設定層次限制

所以最後我們會發現,在這個列印陣列內容這個比賽中,JS才是最後的贏家。c語言一出場就掛了,oop全滅。

console.log()真強!

最後推薦一套書,是我最近幾年中看過的最好的JS書,講解的非常的透徹,特別是原型模型這一部分。

2樓:黃亮anthony

因為IO(就是列印到控制台這種)是最複雜的問題,只有python憨憨的去幹了,其它語言但凡有考慮過一下的都不敢內建乙個實現。

3樓:遊客賬戶0x0

首先,容易觀察到大部分程式語言自帶的printing函式都是非常「根本性」和「通用的」,比如列印整數、列印字串,都有乙個特點:

格式上沒有什麼靈活性,有相對來說「唯一」的實現方式

因此,只要需要列印含有整數或字串的東西都能用它們。

但列印陣列就不一樣了:

該用什麼格式?用語言自身的語法,還是其他格式?用空格還是換行?要不要自動換行?

在不同場景下會有不同需求,所以要寫乙個適合標準庫的,足夠通用的陣列列印是很難的。相反用迴圈就很簡單。

但如題主所言,直接列印確實很方便,而且我猜題主也不在意格式什麼的,只是想快速看一下陣列內容是吧?既然有需求就會有解決方案。這種debugging的列印需求對應的就是某種value inspection的功能,這應該是由某個debugger提供的API完成的。

所以按照這個方向去找,我覺得大部分語言都很可能有乙個用於debug的庫,其中有value inspection,也就有直接列印陣列的函式。

為什麼程式語言中沒有未知數?

湛藍水晶 用Excel解方程了解一下 A1填 B1 B1 C1 C1 B1填2,選中A1。然後選單 Data What If Analysis Goal Seek.在彈出來的對話方塊 Set Cell選A1,To Value填5,By Changing Cells填C1 OK之 結果出來。 Matl...

程式語言中的 組合性 是什麼意思?

丁順 在SICP 1.1章,作者說到了乙個強大的程式語言能夠有3個基本的機制 基礎的表示式 primitive expressions 各種組合的方法 means of combination 各種抽象的方法 means of abstraction 而一般每乙個抽象的方法都有對應的組合的方法來把他...

程式語言中「庫」與「函式」是什麼關係?

PeterYuan 庫。library。直譯過來就是圖書館,可想而知這個體量和作用,而中文翻譯的庫,也表明這一點,比如倉庫 庫房。都是儲存大量物質的地方。而函式,對於圖書館來說可以是一本書,對於倉庫來說可以是乙個物品。當然,也可以乙個library裡就放一本書,乙個倉庫裡就放乙個物品,單一職責,就是...