中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

做淘寶客網(wǎng)站用什么系統(tǒng)線上推廣怎么做

做淘寶客網(wǎng)站用什么系統(tǒng),線上推廣怎么做,5 電子商務(wù)網(wǎng)站建設(shè)的步驟,東莞外貿(mào)網(wǎng)站建設(shè)一、一個(gè)實(shí)際問(wèn)題 用一個(gè)線性代數(shù)庫(kù)的求逆矩陣函數(shù)時(shí),讓我很不爽,我必須按照下面的形式寫(xiě)調(diào)用代碼: ...if let Some(inv_mat) try_inverse(mat.clone()) {...}...注意 try_inverse 函數(shù)的參數(shù)傳遞形式,函數(shù)參數(shù)是 mat.clone() 而…

一、一個(gè)實(shí)際問(wèn)題

用一個(gè)線性代數(shù)庫(kù)的求逆矩陣函數(shù)時(shí),讓我很不爽,我必須按照下面的形式寫(xiě)調(diào)用代碼:

	...if let Some(inv_mat) = try_inverse(mat.clone()) {...}...

注意 try_inverse 函數(shù)的參數(shù)傳遞形式,函數(shù)參數(shù)是 mat.clone() 而不是 mat,因?yàn)檫@個(gè) mat 變量后面我還得使用。有看了幾個(gè)其他的線性代數(shù)庫(kù),大都是按照這個(gè)形式定義的。我不得不思考一下為什么要這么干。

我們看這個(gè)函數(shù)的幾種可能的聲明形式:

	fn try_inverse(mat: Mat) -> Option<Mat> {...}   		// .... (1)fn try_inverse(mat: &Mat) -> Option<Mat> {...}   		// .... (2)fn try_inverse(mat: &mut Mat) -> Option<Mat> {...}   	// .... (3)	

下面分別討論:

1、fn try_inverse(mat: Mat) -> Option

我們有兩種辦法向函數(shù)傳遞參數(shù)。如果 mat 函數(shù)調(diào)用后不再使用,可以直接把變量所有權(quán)轉(zhuǎn)移給函數(shù),按下面形式調(diào)用:

	...if let Some(inv_mat) = try_inverse(mat) {...}...

如果 mat 在函數(shù)調(diào)用后還有別的用途,必須保留變量所有權(quán),把變量克隆一份傳遞給函數(shù),按照下面的方法調(diào)用:

	...if let Some(inv_mat) = try_inverse(mat.clone()) {...}...

為什么么要這樣傳遞參數(shù)?原因是,逆矩陣是在原矩陣的基礎(chǔ)上構(gòu)建出來(lái)了,這個(gè)構(gòu)建過(guò)程會(huì)逐步覆蓋掉原矩陣的數(shù)據(jù)。因此,求逆矩陣函數(shù)需要獲得參數(shù)的所有權(quán),在原矩陣基礎(chǔ)上完成逆矩陣構(gòu)建。

如果得不到所有權(quán)又如何?

2、fn try_inverse(mat: &Mat) -> Option

如果參數(shù)采用傳遞引用的方式,函數(shù)調(diào)用就變成了以下形式:

	if let Some(inv_mat) = try_inverse(&mat) {...}

對(duì)我們來(lái)講很是方便,但是這里存在一個(gè)效率問(wèn)題。

無(wú)論 mat 我們后續(xù)是否使用,try_inverse() 都要首先克隆一個(gè)備份,然后在此基礎(chǔ)上構(gòu)建逆矩陣。也就是說(shuō),引用傳參,形式上看調(diào)用方式很簡(jiǎn)潔,但是運(yùn)行效率不高。而上面?zhèn)髦档姆绞?#xff0c;在參數(shù)后續(xù)不再使用時(shí),可以省去變量完整克隆的運(yùn)算時(shí)間。

那么,傳遞可修改引用可行嗎?

3、fn try_inverse(mat: &mut Mat) -> Option

答案是不可以。我們看傳入變量 &mut Mat 和返回結(jié)果 Option<Mat> 的語(yǔ)法形式就可以判斷出,函數(shù)的結(jié)果和參數(shù)必須是兩個(gè)獨(dú)立的矩陣,不可能在參數(shù)的基礎(chǔ)上構(gòu)建逆矩陣。如果想利用傳入的可變引用,函數(shù)聲明需要改成下面的形式:

	fn try_inverse(mat: &mut Mat) -> Option<&Mat> {...}   	// .... (4)	

這又涉及到變量生命周期問(wèn)題了。不難看出這個(gè)方式傳入?yún)?shù)和返回結(jié)果,是一種導(dǎo)致語(yǔ)義復(fù)雜化、后患無(wú)窮的方法。

綜上所述,函數(shù)聲明(1)是一種最合適的形式,它把參數(shù)的克隆權(quán)交給了使用者,可避免不必要的克隆。聲明(2) 雖然讓使用者感覺(jué)很簡(jiǎn)潔,但犧牲了算法效率。聲明(3)讓參數(shù)變量冒著被修改的副作用,但沒(méi)換來(lái)任何好處,所以不推薦。聲明(4)的副作用問(wèn)題多多,更不推薦。

二、函數(shù)傳參技術(shù)要點(diǎn)

1、 foo(x):

foo(x) 的語(yǔ)法意義

  • 如果foo函數(shù)的參數(shù)是按值接收(即它需要一個(gè)所有權(quán)的拷貝),那么你可以直接傳遞x。
  • 這種方式下,x的所有權(quán)會(huì)被移動(dòng)到foo函數(shù)中,之后你就不能再使用原始的x了,因?yàn)镽ust的所有權(quán)規(guī)則不允許一個(gè)值有多個(gè)所有者。

foo(x) 的參數(shù)潛在的問(wèn)題

  • 開(kāi)發(fā)應(yīng)用程序時(shí),參數(shù) x 大部分是胖指針類型的。如果我們希望函數(shù) foo 調(diào)用后,傳入的參數(shù)在函數(shù)執(zhí)行后還能繼續(xù)使用,這種參數(shù)定義模式下,我們必須按照下面的形式調(diào)用:
	...foo(x.clone());...

也就是說(shuō),需要把變量的一個(gè)完整克隆移動(dòng)到函數(shù)的參數(shù)棧,這樣才不會(huì)影響變量 x 在函數(shù)調(diào)用后的可用性。但是,變量的完全克隆操作的代價(jià)通常很高。

2、 foo(&x):

  • 如果foo函數(shù)接收一個(gè)引用作為參數(shù)(例如fn foo(x: &T)),則你應(yīng)該傳遞x的引用(&x)。
  • 在這種情況下,foo函數(shù)將獲得x的借用,而不是所有權(quán)。這意味著你可以在調(diào)用foo之后繼續(xù)使用x。
  • 需要注意的是,根據(jù)Rust的借用規(guī)則,你不能在借用期間修改x(除非foo接收一個(gè)可變引用,即fn foo(x: &mut T),并且你確實(shí)需要修改x)。

3、foo(x.clone()):

  • 如果foo函數(shù)需要一個(gè)值的拷貝,但你希望在調(diào)用之后仍然保留對(duì)原始x的使用權(quán),你可以克隆x并傳遞克隆的版本。
  • 這意味著你將創(chuàng)建一個(gè)x的完整拷貝,并將其傳遞給foo函數(shù),同時(shí)保留原始x的所有權(quán)和使用權(quán)。
  • 使用clone()可能會(huì)有性能開(kāi)銷,特別是當(dāng)x很大時(shí),因?yàn)樗婕暗絻?nèi)存的分配和數(shù)據(jù)的復(fù)制。

在選擇使用哪種方式時(shí),你應(yīng)該考慮以下因素:

  • 函數(shù)的參數(shù)類型和要求。
  • 你是否需要在調(diào)用函數(shù)之后繼續(xù)使用x
  • x的大小和復(fù)制成本。
  • 是否有必要避免潛在的副作用或修改。

總的來(lái)說(shuō),在Rust中,這三種方式的選擇受到語(yǔ)言所有權(quán)和借用規(guī)則的深刻影響,你需要根據(jù)具體情況來(lái)決定使用哪一種。

http://m.risenshineclean.com/news/64911.html

相關(guān)文章:

  • 做農(nóng)資的網(wǎng)站網(wǎng)站流量統(tǒng)計(jì)工具有哪些
  • cms做網(wǎng)站后臺(tái)互聯(lián)網(wǎng)推廣的方式
  • 網(wǎng)站日志怎么做網(wǎng)站收錄一鍵提交
  • wordpress中文免費(fèi)模板下載寧波seo外包推廣公司
  • 蘇州網(wǎng)站網(wǎng)絡(luò)營(yíng)銷推廣石家莊seo代理商
  • 小程序大概需要多少錢南京seo圈子
  • 山南網(wǎng)站建設(shè)網(wǎng)絡(luò)平臺(tái)推廣方案
  • 做編程題的網(wǎng)站全國(guó)新冠疫苗接種率
  • seo營(yíng)銷網(wǎng)站的設(shè)計(jì)標(biāo)準(zhǔn)百度快照優(yōu)化
  • 有什么專門搜試卷做的網(wǎng)站app推廣平臺(tái)排行榜
  • 重慶裝修貸廣州seo服務(wù)外包
  • 廣州天河區(qū)網(wǎng)站建設(shè)搜索引擎推廣有哪些
  • 移動(dòng)端是指手機(jī)還是電腦優(yōu)化大師如何刪掉多余的學(xué)生
  • 安卓市場(chǎng)2022最新版下載河南網(wǎng)站關(guān)鍵詞優(yōu)化
  • 蘇州網(wǎng)站建設(shè)選蘇州夢(mèng)易行百度網(wǎng)游排行榜
  • 余姚網(wǎng)站制作軟文營(yíng)銷是什么意思
  • 俄文網(wǎng)站策劃搜索引擎都有哪些
  • 燕郊做網(wǎng)站的外貿(mào)網(wǎng)站建設(shè) google
  • 淘客軟件自動(dòng)做網(wǎng)站百度網(wǎng)址大全舊版
  • 網(wǎng)站界面用什么軟件做百度云電腦版網(wǎng)站入口
  • 適合做外鏈的網(wǎng)站互聯(lián)網(wǎng)平臺(tái)
  • 社區(qū)問(wèn)答網(wǎng)站開(kāi)發(fā)谷歌推廣開(kāi)戶
  • 杭州網(wǎng)站建設(shè)杭州磁力引擎
  • 百度網(wǎng)站快速排名公司重慶seo網(wǎng)絡(luò)推廣
  • 佛山市城市建設(shè)檔案館網(wǎng)站競(jìng)猜世界杯
  • 深圳網(wǎng)站建設(shè)html5惠州seo怎么做
  • 做外貿(mào)收費(fèi)的網(wǎng)站seo交流論壇
  • 買公司的網(wǎng)站建設(shè)北京seo顧問(wèn)外包
  • 盤古建站模板seo研究中心論壇
  • 河南官網(wǎng)網(wǎng)站建設(shè)廣告語(yǔ)