日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

查看某个方法在哪里被调用_MATLAB局部函数公有化的方法: localfunctions

發布時間:2024/4/18 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 查看某个方法在哪里被调用_MATLAB局部函数公有化的方法: localfunctions 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

知乎視頻?www.zhihu.com

MATLAB的一個函數文件里面, 開頭第一個函數是可以被外部調用的, 而其他函數是無法直接被外部調用的, MATLAB稱之為局部函數.

如果用OOP的術語來說, 開頭第一個函數可以被稱為public函數, 其他函數可以被稱為private函數.

舉個例子:

function vals = computeEllipseVals(a, b) e = computeEccentricity(a, b); f = computeFocus(a, b); ae = computeArea(a, b); vals = e + f + ae; % fh = localfunctions; endfunction e = computeEccentricity(a, b) f = computeFocus(a,b); e = f/a; endfunction f = computeFocus(a, b) f = sqrt(a^2-b^2); endfunction ae = computeArea(a, b) ae = pi*a*b; end

試圖調用這四個函數:

結果是符合預期的, 第一個函數式public函數, 可以被外部調用, 而其他3個, 是private函數, 不能被外部調用, 只能被第一個函數調用.

有句話說得好, 計劃趕不上變化.

原先定義那些private函數, 預期是不會被外部調用的. 但是, 需求發生了變化, 現在想要外面調用其中某個private函數了, 怎么辦呢?

最簡單的方法, 我相信每個人都能想到的: 將那個private函數復制出來, 生成一個新的函數文件, 這樣的話, 那個private函數就成為了public函數了.

這樣做當然是可以的, 但在我看來, 不夠優雅, 至少有3個缺點:

1 復制出來的那個函數有可能調用了其他的private函數, 你很可能少復制了.

比如computeEccentricity函數調用了computeFocus函數.

2 多了一個文件.

文件越多, 維護起來成本越高.

3 同一個函數存在了兩個版本了.

剛剛復制到外部的時候, 確實這兩個版本是一模一樣的, 但是以后可能會修改其中一個, 忘了修改另一個, 這是bug的主要來源之一.

現在向大家介紹一個優雅, 安全的做法: 利用localfunctions函數

function [vals, fh] = computeEllipseVals(a, b) e = computeEccentricity(a, b); f = computeFocus(a, b); ae = computeArea(a, b); vals = e + f + ae; fh = localfunctions; endfunction e = computeEccentricity(a, b) f = computeFocus(a,b); e = f/a; endfunction f = computeFocus(a, b) f = sqrt(a^2-b^2); endfunction ae = computeArea(a, b) ae = pi*a*b; end

相比之前的代碼, 就改動了兩處:

1 增加語句: fh = localfunctions;

2 增加一個輸出變量: fh

運行看一下結果:

fh就是一個cell, 內部是匿名函數, 那些匿名函數就是那些局部變量, 貌似順序是按照定義的順序來的, 如果不確定的, 先打印出fh變量查看.

現在可以調用局部函數了:

如果嫌索引的方法調用, 過于抽象(無法一眼看出調用的是哪個局部函數), 可以用以下方法來:

就是先將匿名函數, 起名為局部函數名, 然后就可以像調用public函數那樣調用private函數了.

總結: 使用localfunctions函數, 可以優雅安全地調用局部函數, 值得大家使用.

創作不易, 請大家"素質三連": 點贊, 收藏, 分享.

總結

以上是生活随笔為你收集整理的查看某个方法在哪里被调用_MATLAB局部函数公有化的方法: localfunctions的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。