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, 效能...


        








2024年9月22日 星期日

flutter build ios Error (Xcode): unsupported option '-G' for target 'arm64-apple-ios10.0'

Failed to build iOS app

Could not build the precompiled application for the device.

Error (Xcode): unsupported option '-G' for target 'arm64-apple-ios10.0'


Error launching application on iPhoneSE.






solution:


markchiu@MacPro ios % pod update

Update all pods

Updating local specs repositories


CocoaPods 1.15.0 is available.

To update use: `gem install cocoapods`


For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.15.0




step 1: 試著更新cocopods.

sudo gem install cocoapods

after that, you need to update pod using below command

pod setup

You can check pod version using below command

pod --version


step2: 再參考這一片文章:
https://github.com/firebase/flutterfire/issues/13342

You have to go to Xcode => Runner => Build Settings and put "Allow Non-modular Includes In Framework Modules" to "yes"


第三步:增加 if target.name == 'BoringSSL-GRPC'...相關code在 Podfile
post_install do |installer|
installer.pods_project.targets.each do |target|
        
           //other code may in there.

if target.name == 'BoringSSL-GRPC'
target.source_build_phase.files.each do |file|
if file.settings && file.settings['COMPILER_FLAGS']
flags
= file.settings['COMPILER_FLAGS'].split
flags.reject! { |
flag| flag == '-GCC_WARN_INHIBIT_ALL_WARNINGS' }
file.settings[
'COMPILER_FLAGS'] = flags.join(' ')
end
end
end

end
參考:https://stackoverflow.com/questions/78608693/boringssl-grpc-unsupported-option-g-for-target-arm64-apple-ios15-0

成功!3個步驟搞定,可以成功build ios app.

2024年8月8日 星期四

[感想] 死侍與金鋼狼 觀後感


電影中死侍與金鋼狼的互動充滿了打鬥、幽默和互相挖苦。這兩個人都有再生能力,因此他們的戰鬥往往非常激烈但也非常有趣,但一直重複相同的梗,電影中一直出現,看多了真的很無趣.

劇情真的是爛爆,無故出現TVA, 又奇異博士的指環可以任意穿越虛空與現實.還可到TVA總部去.

置洛基於何處,眾所皆知,TVA這裏是不允許魔法的.超能力也是,但電影中那反派竟然可以任意使用超能力???

多重宇宙的梗,從蜘蛛人那就已經出現過很多次了.

這次換成死侍,真的是了無新意.上百位死侍一起出現,但卻只是看到一個人就全都態度大轉變???

而且從頭到尾反派不夠強, 主線劇情亂七八糟.應該要學學哈利波特或魔戒,重點是要講述的故事,其意義在哪,而不是把一大堆冷笑話聚集在一起,只是讓人覺得無聊.

真的是一部大爛片.


2024年4月11日 星期四

202404參觀台北小米之家

小米的東西非常經濟實惠,品質又不錯.

但這現象非常可怕,小米一出新機大家都搶.

很遺憾在這售價成本之下,其他台廠根本被打得毫無招架之力.

以小米手環來說,別家還要3000元以上,但小米只要不到1000元.

根本就是成本價販售 .

連samsung, google這種資源多的都打不贏小米了, 台廠真的是需要加油了或乾脆放棄整個手機市場好了.

這狀況跟電動車輸出美國一樣,美國廠商必定會被低價電動中國車打趴,如果沒有關稅保護的話.




不只手機,現在連螢幕都出了,雖然沒有4k版本,但這些目前已有的品質已經很棒,
價格也是超低,可能未來沒多久,台灣品牌的螢幕廠可能都要被打趴.






小米14 ultra.



便宜的機種redmi 13C, 價格超殺,配上小米的品質,簡直打趴所有同價位的機種.






而且超過5000元台幣也有分期了.



平板簡直是成本價,   品質又不錯,沒有廉價品的感覺.





整個小米生態系很恐怖,看來台廠真的要另尋出路.







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

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