句柄的用法和相關概念總結

1、在matlab中,每一個對象都有一個數字來標識,叫做句柄.當每次創建一個對象時,matlab就爲它建立一個唯一的句柄。

2、句柄中包含有該對象的相關信息參數,可以在後續程序中進行操作,改變其中的參數,以便達到不同的效果。

3、句柄與指針的區別在於:指針對應着一個數據在內存中的地址,得到了指針就可以自由地修改該數據。而句柄不行,它是對象生成時系統指定的,是爲了區別系統中存在的各個對象。

4、從數據類型上來看它只是一個16位的無符號整數。句柄實際上是一種指向某種資源的指針,但與指針又有所不同。“句柄”(handle),handle的本意是把柄,把手的意思。相當於C語言中的函數指針(入口地址),只不過句柄就用一個唯一的常整數來指出。

5、函數句柄提供一種簡介訪問函數的手段,用戶可以很方便地調用其他函數:提供函數調用過程中的可靠性,減少程序涉及中的冗餘,同時可以在使用函數的過程中保存函數相關的信息,尤其是關於函數執行的信息。
創建函數句柄使用@或者str2func命令創建
函數句柄的創建:handle=@functionname,handle爲所創建的函數句柄,functionname爲所創建的函數。或者 handle=str2func('functionname')

那麼使用函數句柄有什麼好處呢?
1、提高運行速度。因爲matlab對函數的調用每次都是要搜索所有的路徑,從set path中我們可以看到,路徑是非常的多的,所以如果一個函數在你的程序中需要經常用到的話,使用函數句柄,對你的速度會有提高的。
2、使用可以與變量一樣方便。比如說,我再這個目錄運行後,創建了本目錄的一個函數句柄,當我轉到其他的目錄下的時候,創建的函數句柄還是可以直接調用的,而不需要把那個函數文件拷貝過來。因爲你創建的function handles中,已經包含了路徑。

函數句柄的操作:

  functions:返回函數句柄的相關信息

  func2str:根據函數句柄創建一個函數名的字符串

  str2func:由一個函數名的字符串創建一個函數句柄

  save:從當前工作區間向M文件保存函數句柄

  load:從一個M文件中向當前工作區間調用函數句柄

  isa:判斷一個變量是否包含一個函數句柄

  isequal:判斷兩個函數句柄是否爲某一相同函數的句柄

我的理解:句柄類似於對對象的引用(弱引用),可以通過句柄查看對象的屬性,也可以通過對句柄的調用來修改對象的相關屬性。函數句柄可以理解爲函數指針,handle,”把手“。函數句柄一般應用在匿名函數和對圖形對象設置相關樣式。

參考資料:http://blog.sina.com.cn/s/blog_c0468c8f0101xbbu.html
                  https://blog.csdn.net/qq_30089191/article/details/72853960
                  https://blog.csdn.net/algorithm_lixuan/article/details/75675176
                  https://u011936142.iteye.com/blog/2032526
                  https://www.cnblogs.com/weiweicf/p/5970497.html
                  https://blog.csdn.net/aiieno0/article/details/24785625

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章