উত্তরগুলি একটি ওভারলোডেড ফাংশনগুলির সংমিশ্রণে (এবং "instead" পরিবর্তে "**" ব্যবহার করে অন্য কিছু ভাষা ব্যবহার করে - আমার কাছে আরও পরিষ্কার হয়):
infix operator ** { associativity left precedence 160 }
func ** (radix: Double, power: Double) -> Double { return pow(radix, power) }
func ** (radix: Int, power: Int ) -> Double { return pow(Double(radix), Double(power)) }
func ** (radix: Float, power: Float ) -> Double { return pow(Double(radix), Double(power)) }
ফ্লোট ব্যবহার করার সময়, আপনি নির্ভুলতা হারাতে পারেন। যদি সংখ্যাযুক্ত আক্ষরিক এবং পূর্ণসংখ্যার এবং অ-পূর্ণসংখ্যার মিশ্রণ ব্যবহার করা হয়, আপনি ডিফল্ট হিসাবে ডাবলটি দিয়ে শেষ করবেন। আমি ব্যক্তিগতভাবে স্টাইলিস্টিক / পঠনযোগ্যতার কারণে পা (ক, খ) এর মতো ফাংশনের পরিবর্তে গাণিতিক ভাবটি ব্যবহার করার দক্ষতা পছন্দ করি তবে এটি কেবল আমারই।
যে কোনও অপারেটর যা পাও () এর ত্রুটি ঘটায় তা ঘটায় এবং এই ফাংশনগুলিকে একটি ত্রুটি ছুঁড়ে ফেলবে, সুতরাং ত্রুটি পরীক্ষার বোঝা এখনও যে কোনওভাবে পাওয়ার ফাংশন ব্যবহার করে কোডের সাথেই রয়েছে। কিআইএসএস, আইএমএইচও।
নেটিভ পাউ () ফাংশন ব্যবহার করে উদাহরণস্বরূপ বর্গমূল (2 ** 0.5) বা বিপরীত (2 ** -3 = 1/8) নিতে পারবেন। বিপরীতমুখী বা ভগ্নাংশের ব্যবহারকারীর ব্যবহারের সম্ভাবনার কারণে, আমি আমার সমস্ত কোড লিখেছিলাম ডিফল্ট ডাবল প্রকারের পা () ফাংশনটি ফিরিয়ে দিতে, যা সর্বাধিক নির্ভুলতা ফিরে আসে (যদি আমি ডকুমেন্টেশন সঠিকভাবে মনে করি)। যদি প্রয়োজন হয় তবে এটি ইনট বা ফ্লোট বা যেকোনো কিছুতে টাইপ-কাস্ট করা যেতে পারে, সম্ভবত নির্ভুলতার ক্ষতি সহ।
2 ** -3 = 0.125
2 ** 0.5 = 1.4142135623731
2 ** 3 = 8