有没有办法让函数接受任何具有 String rawValue 的 Enum 类型?

2023-12-28

我想出的一种方法是制定一个其他枚举必须遵守的协议。

protocol StringRepresentable
{
    var rawValue: String { get }
}

struct Endpoint
{
    enum User: String, StringRepresentable
    {
        case Login = "/user/login"
        case Register = "/user/register"
    }

    enum Item: String, StringRepresentable
    {
        case Like = "/item/like"
        case Buy = "/item/buy"
    }
}

func urlString(endpoint: StringRepresentable) -> String
{
    return "http://www.example.com\(endpoint.rawValue)"
}

let userLoginEndpoint = urlString(Endpoint.User.Login)
let buyItemEndpoint = urlString(Endpoint.Item.Buy)

还有比这更好的其他方法吗?

或者是否有一个协议,已经提供了类似的东西,但我错过了?


已经有RawRepresentable协议可以做你想做的事。

你可以根据是否扩展RawValue == String

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法让函数接受任何具有 String rawValue 的 Enum 类型? 的相关文章

随机推荐

  • 使用powershell在其他域上查找“网络用户”?

    我想做的是 net user user1 DOMAIN 但是 我想为计算机未加入但可以访问的域执行此操作 用户分布在 DOMAIN1 和 DOMAIN2 中 我运行它的计算机已加入 DOMAIN1 但会在 DOMAIN2 上查找用户 这可以
  • 在 mongodb 的嵌套数组中插入数据[重复]

    这个问题在这里已经有答案了 可能的重复 MongoDB 更新嵌套数组中的字段 https stackoverflow com questions 9611833 mongodb updating fields in nested array
  • Safari 中的垂直居中

    我在 Safari 中使用 margin auto 0 时遇到垂直居中问题 在嵌套在带有 display inline flex 的 div 内的 div 上 它在 Firefox Chrome Opera 中工作得很好 但在 Safari
  • Travis CI 失败,因为无法接受许可证约束布局

    在我写这个问题之前 我已经搜索过同样的问题 他们确实有导出许可证 因为仍然使用 alpha 版本的约束布局 但现在android已经发布了约束布局的稳定版本 我尝试了很多设置但仍然失败 我最新的 travis yml language an
  • Django - 显示图像字段

    我刚刚开始使用 Django 还没有找到很多关于如何显示的信息imageField 所以我做了这个 模型 py class Car models Model name models CharField max length 255 pric
  • 如何判断闭合路径是否包含给定点?

    在 Android 中 我有一个 Path 对象 我碰巧知道它定义了一条闭合路径 并且我需要弄清楚给定点是否包含在路径中 我所希望的是类似的东西 路径 contains int x int y 但这似乎不存在 我寻找这个的具体原因是因为我在
  • 如何使用 signalr 将 json 对象发送到 .net 服务器

    我正在开发一个 Angular 应用程序 我必须使用 netcore 服务器和 signalR 将数据从角度形式发送到外部服务器 我可以使用信号集线器在 Angular 客户端和控制器之间建立连接 但我很困惑如何将 json 对象从客户端发
  • 在 bash 中选择不同的可执行文件

    当我想跑步的时候make为了生成一些可执行文件 它总是使用 Sunmake位于 在 usr local bin make而不是 GNU make 可以在以下位置找到 usr sfw bin gmake 我如何告诉操作系统使用 GNU mak
  • TkInter:了解解除绑定功能

    TkInter 是否unbind http effbot org tkinterbook widget htm Tkinter Widget unbind method函数阻止应用它的小部件将更多事件绑定到小部件 澄清 假设我在程序的早期将
  • Python 中以下代码有什么问题?

    我试图对一个字段实施约束 但它不会导致约束验证 而是允许保存记录而不显示任何约束消息 def check contact number self cr uid ids context None for rec in self browse
  • 在 AOSP Android 6.0 上更新 WebView

    我正在开发基于 AOSP Android 6 0 Marshmallow 的设备 我想将标准 Android webview 更新到最新版本以使用最新的 JavaScript 为此我更换了external chromium webview
  • 使 JButton 在 JTable 内可单击

    这是我想做的事情的屏幕截图 发生的情况是 JButton 显示正确 但当我单击它时没有任何反应 经过一番搜索 我发现Object由返回table getValueAt 是一个字符串而不是 JButton 这是代码 tblResult new
  • 是否有“纯粹适用的任一”的标准名称或实现?

    我经常发现我所谓的 纯粹应用性 的用处Either i e Either与Applicative只要我们不实现一个实例就可用Monad实例也是如此 newtype AEither e a AEither unAEither Either e
  • 使用可变批量大小加载数据?

    我目前正在研究基于补丁的超分辨率 大多数论文将图像分割成更小的补丁 然后使用这些补丁作为模型的输入 我能够使用自定义数据加载器创建补丁 代码如下 import torch utils data as data from torchvisio
  • 基于列合并数据框,仅保留第一个匹配项

    我有 2 个如下所示的数据框 df 1 Index Fruit 1 Apple 2 Banana 3 Peach df 2 Fruit Taste Apple Tasty Banana Tasty Banana Rotten Peach R
  • 防止违反 PCI 标准暴露敏感数据 - response.getWriter().write(xml.toString())

    我正在根据代码审计报告修复代码 它针对具有语法的行显示 防止敏感数据的暴露 response getWriter write xml toString 整个代码如下 String alertId request getParameter a
  • 我可以不映射/平面映射一个OptionalInt吗?

    为什么好像没有map flatMap OptionalInt 或其他原始可选风格的方法 The stream 映射操作允许对象和基元之间的转换 但为什么Optional不利用这一点呢 OptionalInt profileId Option
  • 何时在 JavaScript 中对对象使用 const?

    我最近读到了有关 ES6 的文章const关键字 当有这样的东西时我可以理解它的重要性 function const PI 3 14 PI 3 15 Uncaught TypeError Assignment to constant var
  • Perl 正则表达式从哈希替换

    有没有一种有效的方法可以使用 Perl 散列中的值替换一堆字符串 例如 regex foo bar regex hello world regex python perl open F myfile txt while
  • 有没有办法让函数接受任何具有 String rawValue 的 Enum 类型?

    我想出的一种方法是制定一个其他枚举必须遵守的协议 protocol StringRepresentable var rawValue String get struct Endpoint enum User String StringRep