如何從TclOO中的:: oo :: object區分基本類型(如字符串)?TCLOO:如何區分基本類型與對象
1
A
回答
2
您可以精確地確定一個值是手柄的目的是通過使用info object isa object
:
if {[info object isa object $thing]} {
puts "Hey, $thing is an object!"
}
一般來說雖然,TCL的類型系統具有的所有值至少是名義上字符串。更嚴格地說,每個值都可串行化爲一個字符串。有些值也具有其他特性(例如,數字也知道它們的數字性)。 TclOO對象句柄是字符串和命令名稱(因此可以是rename
d)和(當然)對象句柄。
0
愚蠢的答案:
# Since a normal string is unlikly to be "::oo::object", this will return 1
# if the argument is not ::oo::object
proc is_oo_object args {
string equals $arg ::oo::object
}
# gettype - higly accurate
proc gettype arg {
# EIAS
return "string"
}
答案很簡單:你不能。如果有人向你傳遞一個對象的名字,那就是一個字符串。 (見的Tcl/Tk維基EIAS)
你可以嘗試猜測,如果它是一個面向對象:: ::對象,如果你檢查是否存在使用該名稱的命令:
if {[llength [namespace which $arg]]} {
....
}
這仍然不意味着這是:: oo :: object。 你可以試着用expr {[catch {info object class $arg ::oo::object} res] && $res}
來檢查它,但是誰告訴你有人想要通過oo::class
作爲字符串?
相關問題
- 1. 如何區分對象類型與Typescript中的數組類型
- 2. cout如何區分基本類型?
- 3. 如何區分對象類型c#
- 4. 分配對象和基本類型
- 5. TclOO:訪問嵌套對象
- 6. 如何將基類型對象分配給父類型引用?
- 7. 模板類來區分對象類型?
- 8. 區分Java中的基本SQLException類型?
- 9. 如何僅基於基本類型創建派生對象?
- 10. 與基本類型
- 11. 如何在TypeScript中區分兩種不同的對象類型?
- 12. 如何從基本類型的對象映射?
- 13. 如何區分對象和const對象
- 14. JavaScript對象,如何分配base64類型
- 15. 如何動態分配對象類型?
- 16. 可比對象與對象類型之間的區別
- 17. 在Cassandra中存儲基元類型與對象類型
- 18. 基本對象:ORA-00932當INSERT對象類型數據時
- 19. 使用派生類對象分配基類對象的錯誤類型
- 20. 如何測試對象是基本類型還是Java中的基本類型數組?
- 21. C#基本對象和類
- 22. 如何區分具有不同抽象類型字段的對象?
- 23. 「類型'對象'是不可分配類型」與新的HttpClient/HttpGetModule
- 24. 基本類型的基本類型
- 25. Python類型系統 - 對象與類型
- 26. 普通類的對象與泛型類的對象是否有區別?
- 27. 清分基類對象的derieved類
- 28. 我們如何區分SDK類對象和自定義類對象?
- 29. 如何在c中按對象本身獲取對象類型#
- 30. 如何將超類對象從基類對象中分離出來?