如何使 Int 符合 BinaryFloatingPoint 或 Double/CGFloat 符合 BinaryInteger?

2024-03-23

我有一个函数接受符合以下条件的值Numeric协议,在某些时候我想将其转换为Int, Double or CGFloat.

来自 xCode 的错误:

Initializer 'init(_:)' requires that 'T' conform to 'BinaryInteger'

我的功能:

func test<T: Numeric>(value1: T, value2: T) {

    let someWork = value1 + value2

    let intValue: Int = Int(someWork)               // <<: Here!
    let doubleValue: Double = Double(someWork)      // <<: Here!
    let cgflotValue: CGFloat = CGFloat(someWork)    // <<: Here!

    print(intValue, doubleValue, cgflotValue)

}

然后我看到 xCode 错误并将我的函数更新为这个向下版本,我推出Numeric因为二进制整数 and 二进制浮点符合Numeric

func test<T: BinaryInteger & BinaryFloatingPoint>(value1: T, value2: T) {
   
    let someWork = value1 + value2
    
    let intValue: Int = Int(someWork)               // <<: Here: I add BinaryInteger because of Int
    let doubleValue: Double = Double(someWork)      // <<: Here: I add BinaryFloatingPoint because of Double
    let cgflotValue: CGFloat = CGFloat(someWork)    // <<: Here: I add BinaryFloatingPoint because of CGFloat
    
    print(intValue, doubleValue, cgflotValue)
    
}

用例:

let testValue1: Int = 2
test(value1: testValue1, value2: testValue1)

用例的 xCode 错误:

Global function 'test(value1:value2:)' requires that 'Int' conform to 'BinaryFloatingPoint'

用例:

let testValue2: Double = 2.0
test(value1: testValue2, value2: testValue2)

用例的 xCode 错误:

Global function 'test(value1:value2:)' requires that 'Double' conform to 'BinaryInteger'

我怎样才能使Int符合二进制浮点?

Or:

我怎样才能使双精度/CG浮点符合二进制整数?

正如您在 xCode 错误中看到的那样。


您可以添加两个具有不同约束的相同函数

//T: BinaryInteger & BinaryFloatingPoint
func test<T>(value1: T, value2: T) where T: BinaryInteger{
    
    let someWork = value1 + value2
    
    let intValue: Int = Int(someWork)               // <<: Here: I add BinaryInteger because of Int
    let doubleValue: Double = Double(someWork)      // <<: Here: I add BinaryFloatingPoint because of Double
    let cgflotValue: CGFloat = CGFloat(someWork)    // <<: Here: I add BinaryFloatingPoint because of CGFloat
    
    print(intValue, doubleValue, cgflotValue)
    
}
func test<T>(value1: T, value2: T) where T: BinaryFloatingPoint{
    
    let someWork = value1 + value2
    
    let intValue: Int = Int(someWork)               // <<: Here: I add BinaryInteger because of Int
    let doubleValue: Double = Double(someWork)      // <<: Here: I add BinaryFloatingPoint because of Double
    let cgflotValue: CGFloat = CGFloat(someWork)    // <<: Here: I add BinaryFloatingPoint because of CGFloat
    
    print(intValue, doubleValue, cgflotValue)
    
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 Int 符合 BinaryFloatingPoint 或 Double/CGFloat 符合 BinaryInteger? 的相关文章

  • 在 Swift 4 中在 Google 地图上显示路径

    我的问题是我想绘制两点之间的时间 并且我的两个位置都来自不同的控制器 for my first Location extension HomeViewController PickupLocationDelegate func didSel
  • Swift:如何审查/过滤输入的脏话等文本?

    我只是想看看是否有一种既定的方法可以做到这一点 或者如何去做 我有一个文本字段 它本质上充当我的 iOs 应用程序中的表单 用户可以在其中发布内容 我不能让用户发布脏话 不恰当的废话 所以我想过滤掉他们输入的字符串包含这些单词之一的内容并显
  • 在 SwiftUI App 中实现深色模式切换

    我目前正在我的应用程序中研究深色模式 虽然由于我的 SwiftUI 基础 深色模式本身并不困难 但我正在努力选择将 ColorScheme 设置为独立于系统 ColorScheme 的选项 我在苹果人机界面指南中找到了这一点 https i
  • AVPlayerLooper 每次迭代后黑闪

    我正在使用 Apple 的示例代码在UICollectionViewCell背景 我在用着AVPlayerLooper 因为它是同一视频的迭代 我的问题是 当视频结束时 它会显示轻微的黑屏闪烁 也许它正在将视频搜索到0时间 我不确定 这是代
  • 协议本身不符合?

    为什么这段 Swift 代码无法编译 protocol P struct S P let arr P S extension Array where Element P func test
  • 滚动视图下的iOS swift 4 imageview:双击缩小

    我已经应用了图像视图来通过捏合来放大 缩小 那很容易 当在图像视图上应用双击时 无法检测到选择方法 我使用 Xcode 9 和 swift 4 您能告诉我滚动视图是否应该应用双击手势吗 var previewImage UIImage ni
  • iOS Swift 中断键盘事件

    我在拦截键盘事件时遇到问题 我已将我的 iOS 与 SteelSeries Free 游戏手柄控制器 连接 当连接到 iOS 时 它将被检测为蓝牙键盘 这是在我打开Notes时测试的 按下游戏手柄上的任何按钮都会写一个字母 我需要拦截此按钮
  • Swift - 停止 avaudioplayer

    我正在尝试将音板构建到应用程序中 并找到了一种使用标签来控制播放声音的有效方法 不过 我现在正在尝试集成一个可以与 stop 方法上的AVAudioPlayer但是我当前的代码出现错误 EXC BAD ACCESS 这就是我现在正在使用的
  • 如何覆盖应用程序中的内部框架方法(框架外部)

    在 Swift 中子类化时是否有重写内部框架方法 前任 超类 public class BarChartRenderer ChartDataRendererBase internal func drawDataSet context con
  • 手动设置时间和日期时,iOS 10 中的重复每日本地通知不会被触发?

    我正在尝试通过触发每日通知来测试 iOS 10 中的本地通知 我正在使用以下示例项目 通知UI 演示 https github com appcoda NotificationsUI Demo 该应用程序中有以下代码之一 let calen
  • 快速布尔运算

    这实在令人困惑 有人有什么想法吗 let viewHasMovedToRight false initially I want this to be false then func moveViewToRight sender UIButt
  • OSX Swift 在默认浏览器中打开 URL

    如何使用 Swift 作为编程语言和 OSX 作为平台在系统默认浏览器中打开 URL 我发现了很多UIApplication like UIApplication sharedApplication openURL NSURL string
  • iOS 视频压缩 Swift iOS 8 损坏的视频文件

    我正在尝试压缩用户相机从 UIImagePickerController 拍摄的视频 不是现有视频 而是动态视频 以上传到我的服务器 并花费少量时间来完成此操作 因此较小的尺寸是理想的选择 而不是 30 较新质量的相机为 45 mb 这是在
  • Swift Firebase - 如何在使用 queryOrdered(byChild: ).queryEqual(toValue: ) 时获取所有 k/v

    root reviews postABC postId reviewXYZ I want everything under this reviewUID buyerUID 01010 text fast shipping responseT
  • 从 AVAudioRecorder 获取分贝

    我正在尝试从 AVAudio 录音机获取分贝值 这是我目前的代码 我有一个启动录音机的方法 然后是一个读取分贝值的方法 var recorder AVAudioRecorder 全局定义的记录器 然后在此处使用 func init reco
  • 如何快速防止标签中出现孤儿?

    我有一个可以有一两行的标签 如果它有两行 我希望第二行至少有两个 或者可能三个 单词 而不仅仅是一个 关于如何使用 swift 实现这一点有什么想法吗 提前致谢 Daniel 编辑 我删除了我愚蠢的第一个想法 这些想法并没有真正的帮助 好吧
  • Audiokit 修剪音频

    我正在制作音频编辑应用程序 我想修剪我的音频 对于音频编辑 我使用 AudioKit 框架 但我在教程和示例中找不到如何使用此框架修剪音频 异步导出允许设置开始和结束样本 https github com AudioKit AudioKit
  • CIAdditionCompositing 给出不正确的效果

    我正在尝试通过平均其他几个图像来创建图像 为了实现这一点 我首先将每个图像变暗 其系数等于我平均的图像数量 func darkenImage by multiplier CGFloat gt CIImage let divImage CII
  • UIApplication.shared.delegate 相当于 SceneDelegate xcode11?

    我在 SceneDelegate 中定义了一个 let 属性 我希望一些 ViewController 能够在场景中访问它 在 UIKit 中 我可以像这样访问 App Delegate 属性 UIApplication shared de
  • 弱变量中间为零

    弱变量什么时候变为零 weak var backgroundNode SKSpriteNode texture SKTexture image initialBackgroundImage backgroundNode position C

随机推荐