是否有可能有一個函數需要(int n,bool wantall)並返回基於bool的不同類型? 讓我想到這個例子的例子是生成斐波那契數。 如果wantall = true,則返回前n個數字的數組(或列表),否則,返回第n個數字。 有沒有辦法做到這一點?是否有可能改變函數的返回類型
0
A
回答
10
不,你不能改變返回類型。
對於你的榜樣,最好你應該有不同的重載你正在談論
GetFirstFibonacciNumbers(int count)
GetSingleFibonacciNumber(int nth)
在bool
傳遞的,這只是醜陋。
但是,如果你堅持一個方法
IEnumerable<int> GetFibonacciNumbers(int n, bool wantall) {
if(!wantall) {
return new[] { GetSingleFibonacciNumber(n); }
}
else {
return GetFirstFibonacciNumbers(n);
}
}
但是,請不要這麼做。
0
您可以返回object
或其他所有可能的返回類型繼承的類型,但除此之外,您不能即時更改返回類型。
0
當然。返回一個object
,或者提供一個枚舉的包裝器,它可以讓你知道實際內部對象的內容。
0
你可以使用一個dynamic返回類型
2
public Object foo(int n, bool wantall)
{
// you can return whatever you want
}
0
沒有,方法合同在編譯時定義,並且不能在運行時改變。
一個選項將返回一個對象類型,但使用在這種情況下的對象類型通常被認爲是未類型安全的,所以最好的做法是避免它..
我看到了一些處理這個問題的方法: -
- 總是返回一個數組,但只有在使用ifall = false時才填充一個數組。
- 對單個值和值數組使用單獨的方法。
0
正如Jason提到的,使用bool作爲您的具體示例並不是一個好主意。然而,問題是使用泛型真正實際意義:例如(使用具體的例子)
public List<int> FibSequence(int i, int? n)
{
List<int> fibSeq = new List<int>();
//Calculate fib sequence
if(n != null)
{
return new List<int>() { fibSeq[n] };
}
return fibSeq;
}
再次,對於這個特殊的目的,它不是很大,但有次一個公平的數字時,我不得不讓當「All」結果只有1時(這會拋出可爲空的int參數,但代碼本身非常相似),「All of X」。然後你的代碼只處理返回的通用列表,並考慮它是否有多個元素。
+0
我也可以將它設置爲數組的第一個元素,但那不是真正的要點 – soandos 2011-05-11 19:55:16
相關問題
- 1. 是否有可能讓PostgreSQL函數返回「任意」類型?
- 2. 是否有可能知道Go中函數的返回值的類型?
- 3. 是否有可能改變Java中的數組類型?
- 4. 是否有可能讓javascript構造函數返回不同的對象類型?
- 5. 是否有可能將Swift泛型類函數的返回類型限制爲相同的類或子類?
- 6. 是否有可能返回不同類型的對象
- 7. 是否可以重寫全局函數的phpdoc返回類型?
- 8. 是否有可能具有任何類型的變量的函數?
- 9. 是否有可能JNI函數返回整數或布爾值?
- 10. 是否有可能改變PHP的print_r函數的行爲
- 11. 函數不能返回具有相同的接口類型爲返回類型
- 12. 是否有可能在打字稿中有函數返回延伸它的類的類型
- 13. 是否有可能將傳輸的ArrayBuffer返回原始類型的數組?
- 14. C++ 11:是否有可能從函數返回一個std :: initializer_list?
- 15. 是否有可能在反應渲染函數中返回空?
- 16. 轉到:是否有可能返回指向函數
- 17. 是否有可能在jQuery中返回事件函數?
- 18. 是否有可能從函數返回兩個向量?
- 19. 是否有可能從函數返回中斷/停止循環?
- 20. 是否有可能在JavaScript函數中返回多次
- 21. 是否有可能django視圖返回javascript函數
- 22. 在PHP中,是否有可能返回一個類的構造函數?
- 23. 是否有可能在PHP中更改數組值的類型?
- 24. 可以純虛函數有定義還是返回類型「void」?
- 25. 普通函數和異步函數返回的Promise類型是否有區別?
- 26. 是否有可能在Codeigniter中返回多個變量/數組?
- 27. 是否有可以調整基類類型的返回類型的基類?
- 28. 是否可以根據函數參數的類型定義的映射來定義函數返回類型?
- 29. 是否有可能從C中的另一個函數返回一個函數?
- 30. 函數功能返回任何類型
您可以使用自定義返回類型,如「FibonacciResult」,其中包含列表和單個數字結果的屬性。但我同意下面的帖子,這不是一個好主意。 – mellamokb 2011-05-11 19:44:28
*「如果wantall = true,則返回前n個數字的數組(或列表),否則,返回第n個數字。有沒有辦法做到這一點?」 - 對不起,這只是一個糟糕的設計不應該在實踐中使用。最好有兩個方法,'GetFibs(int count)'和'GetNthFib(int n)'。 – Juliet 2011-05-11 19:46:15