2024年10月17日 星期四

Dart 不允許函數重載??? Dart doesn't permit function overloading.

在Java 中,函數重載(method overloading)是允許的,即可以有多個函數具有相同的名稱,但是參數類型或數量不同。編譯器可以根據函數的參數類型或數量來選擇正確的函數進行呼叫。


class Calculator {

    // 方法1:兩個整數相加

    fun add(a: Int, b: Int): Int {

        return a + b

    }


    // 方法2:三個整數相加

    fun add(a: Int, b: Int, c: Int): Int {

        return a + b + c

    }


    // 方法3:兩個浮點數相加

    fun add(a: Double, b: Double): Double {

        return a + b

    }

}


fun main() {

    val calculator = Calculator()

    println(calculator.add(1, 2)) // 3

    println(calculator.add(1, 2, 3)) // 6

    println(calculator.add(1.5, 2.5)) // 4.0

}


------

但在Dart 中,函數重載是不允許的,因為Dart 是一種類型安全的語言,它要求在呼叫函數時可以唯一確定要呼叫的函數,而不依賴參數的類型或數量。這樣做可以避免潛在的歧義和混淆,並使程式碼更加清晰和易於理解。

因此,在Dart 中,如果您有多個具有相同名稱的函數,它們的參數類型或數量必須是唯一的。否則,編譯器將無法確定要呼叫的函數,從而導致編譯錯誤。

您可以使用函數命名參數或透過使用不同的函數名稱來避免這種問題。這樣可以確保在呼叫函數時不會出現歧義,使程式碼更加清晰和可維護。

Function overloading requires static types. Dart at its core is a dynamically typed language. Dart did not support overloading originally because it was a much more dynamic language where the declared types did not have any semantic effect. That made it impossible to use static type based overload resolution.

----

ps:

哈哈 , java 最強的 overloading 在dart中竟然不支援.這有好有壞啦.

寫程式的方法一直在改變.

那kotlin有支援嗎?

是的,Kotlin 支援方法重載(Method Overloading)。你可以在同一個類別中定義多個名稱相同但參數列表不同的方法.

---

最近在看筆電, mac 的筆電macbook實在太貴了.但實在很優質.

我發現OLED面板的筆電大都多是鏡面的,以保護OLED面板.但這樣鏡面反光也就很嚴重.

而筆電中使用IPS面板就好很多,都是霧面的.可以有效抗反光.



一般來說apple macbook都比一般intel品牌的nb 貴上1.5倍.

但mac品質也比較好. 所以才說apple光賺這種價差就賺翻了.

macbook缺點是開發app很okay,但ssd空間實在太小, 不太能做需要儲存空間的工作.

-------

所以還是來買台windows nb 吧, ssd空間可擴充或直接比較大,但價格實惠.



16GB RAM, 1T SSD.

但陷阱來了....

大家有發現嗎? cpu .... 125H ... 太爛了

因為 125H  的P core才4個,跟155H比起來,少兩個P core, 且在價格差不多情況下,應該要買155H才對

看看規格表:


來仔細看一下:

Intel Core Ultra 7 155H

Intel Core Ultra 7 155H
  • Cores: 16
  • L3 cache: 24MB (shared)
  • TDP: 20-65 W (max. boost up to 115 W)
  • Transistor size: 7 nm
Core Ultra 7 155H - laptop processor produced by Intel for socket FCBGA-2049 that has 16 cores and 22 threads. The base clock frequency of the CPU is 1400 MHz, but due to Turbo Boost technology, it can perform up to 4800 MHz. The size of the L3 cache is 24 MB. Please note that this chip has integrated graphics Arc Graphics (8-Cores).




然後 155h 的gpu 是arc, 效能...


        








沒有留言:

張貼留言

Dart 不允許函數重載??? Dart doesn't permit function overloading.

在Java 中,函數重載(method overloading)是允許的,即可以有多個函數具有相同的名稱,但是參數類型或數量不同。 編譯器可以根據函數的參數類型或數量來選擇正確的函數進行呼叫。 class Calculator {      // 方法1:兩個整數相加      ...