当前位置: 首页 > news >正文

江门市网站开发品牌网站建设 蝌蚪小8

江门市网站开发,品牌网站建设 蝌蚪小8,福州seo公司排名,温州网页设计招聘信息网python kotlin介绍 在今天的文章中#xff0c;我们将继续上周的文章#xff0c;内容涉及使用Java和Python创建类似Kotlin的构建器#xff0c;并扩展了构建器API以采用一些可选参数以提高灵活性。 我们继续我们HTML示例#xff0c;尝试添加标记属性#xff0c;例如class我们将继续上周的文章内容涉及使用Java和Python创建类似Kotlin的构建器并扩展了构建器API以采用一些可选参数以提高灵活性。 我们继续我们HTML示例尝试添加标记属性例如classid和style。 Kotlin和Python Kotlin设置使用这些参数的方式与我在Python中的使用方式完全相同默认参数和命名参数。 使用Kotlin看起来像这样 html {body {p(klassmyClass, idtheParagraph) { the paragraph text}} } 请注意使用“杯子”而不是“类”。 关键字和标识符的经典冲突。 您可以根据需要使用“ cls”“ clazz”或其他任何东西。 我建议不要使用类对象语言中通常使用的任何东西因为这是完全不同的类。 与上周的p标签相比这是一个很大的升级只是p text 将其从属性更改为成熟的方法。 但是大多数其他示例不需要太多工作。 这是更新的Kotlin代码 class Body {...fun p(class: String, id: String, style: StyleStyle.blank, paragraphBuilder: Paragraph.() - Unit) {val p Paragraph(class, id, style)paragraphs.add(p)p.paragraphBuilder()}... }class Paragraph(val class: String, val id: String, val style: Style) {var text: String operator fun plus(other: String) {text other} } 更新后的Python代码仍使用第一个版本如下所示 class Body:def __init__(self):self.paragraphs ...def p(self, klass, id, styleNone):par Paragraph(klass, id, style)self.paragraphs.append(par)return parclass Paragraph:def __init__(self, klass, id, style):self.klass klassself.id idself.style styleself.text def __enter__(self):return selfdef __exit__(self, exc_type, exc_val, exc_tb):return Falsedef __iadd__(self, text):self.text text __iadd__()是就地加法运算符允许我们说p text 。 在Kotlin中我们使用而不是因为我们不必引用段落对象因此从开头看起来是错误的而我们需要在Python代码中引用p 因此看起来更自然这样我们就可以将调用代码更改为以下形式 html Html() with html as html:with html.body() as body:with body.p(classmyClass, idtheParagraph) as p:p the paragraph text Kotlin和Python都采用Style对象而不是像其他字符串一样仅接受另一个字符串。 实际上我建议也对class和id做同样的事情因为从那时起我们将class和id对象及其CSS设置传递给CSS生成器。 我只是为了举例而没有在这里做。 我不让Style保留字符串因为最好使用某种CSS样式生成器来提供更好的清晰度和正确性。 Java Kotlin和Python都使过渡非常简单。 不幸的是Java没有设置必需的功能来进行如此简单的更改。 您必须依靠古老的流利的API技巧来使您理解它。 重载嘉豪 首先想到的是尽可能多地进行带有大量重载的转换。 您可以为class和id字段创建快速方便的字符串包装器因为它们都只是字符串因此很难区分两者 class Class {public final String text;public Class(String text) {this.text text;} }class ID {public final String text;public ID(String text) {this.text text;} } 这使得所有重载看起来像这样 class Body {...public void p(ConsumerParagraph paragraphBuilder) {...}public void p(Class klass, Consumer...) {...}public void p(ID id, Consumer...) {...}public void p(Style style, Consumer...) {...}public void p(Class klass, ID id, Consumer...) {...}// and so on... 3 more times... } 这变得非常乏味以至于我什至没有写完每一行更不用说开始所有行了。 而且这仅考虑了类id和样式。 还有更多。 走这条路是不好的。 因此我什至不会显示结果代码的样子。 另外对于其余的想法我不会费心地展示API的实现希望它是不言而喻的。 如果您真的对如何实现其中一种API感到好奇请告诉我。 内部设定 设置这些属性的另一种方法是在构建器中进行设置。 提供用于设置这些值的“ Paragraph方法。 在body标签内看起来像这样 html.body(body - {body.p(p - { p.klass myClass; p.id theParagraph;p.addText(the paragraph text);}); }); 这并不可怕特别是在第一行上有那些设置程序行将它们放在后续行上会混淆其目的并且这可能是最简单的但是错误代码的可能性会很高 html.body(body - {body.p(p - {p.klass myClass;p.addText(the paragraph text);p.id theParagraph;}); }); 让我们看看其他选项。 属性对象 仅使用p()两个重载一个仅接受构建器函数的重载以及一个既接受构建器函数又包含Attributes对象的重载我们可以制作一个非常干净的API看起来像这样 html.body(body - {body.p(Attributes.klass(myClass).id(theParagraph), p - {p.addText(the paragraph text);}); }); 就个人而言这是我的最爱。 它需要更多的类和更多的实际复杂性但是我觉得它是最可扩展的。 最大的不便是不同HTML标签具有不同的属性集。 可能应该有一个公共的Attributes构建器类再加上一个特定于标记的类从而使重载次数最多达到4没有属性只有基本的属性只有特定于标记的属性以及这两种类型。 四个重载是可以容忍的但可能不应该。 如果看起来太多最好坚持最后一种策略。 不过为了完整起见我还有一个它实际上可能对其他不模仿HTML或XML的API更好地工作。 通话后大楼 最后一个想法是让Body.p()返回Paragraph 最好是构建器的第二阶段因为这些方法可以在构建器lambda中使用否则可以调用它们如下所示 html.body(body - {body.p(p - {p.addText(the paragraph text);}).klass(myClass).id(theParagraph); }); 这实际上将Attributes类移到末尾作为“ Paragraph构建器的第二阶段。 奥托罗 那是我能给你的最好的。 如果您有兴趣使用Java之类的语言来构建流畅的API则应查阅jOOQ的文章了解它们的用法 。 这是一种完全不考虑lambda的不同方式这很好。 无论如何下周我将发表一系列简短的书评文章时我将与你们交谈。 翻译自: https://www.javacodegeeks.com/2016/01/kotlin-like-builders-java-python-continued-additional-parameters.htmlpython kotlin
http://www.yutouwan.com/news/456437/

相关文章:

  • 大连网站制作 连城传媒app运营费用
  • 柳州网站开发网站提供的服务
  • 一站式服务就像一个什么广州网站建设排名一览表
  • 做网站竞争大吗wordpress如何上传源码
  • 上海网站的优化电商网站建设网
  • 网站开发 工作职责做网站的域名
  • 正能量网站入口不用下载百度主动提交工具 wordpress
  • iis网站找不到网页网站开发预算
  • 网站不用了 怎么关闭吗查询网站备案进度
  • 个人音乐网站模板做网站常用软件
  • 阆中做网站做平面设计买哪个素材网站会员
  • 建设一个网站系统要多久团购网站开发代码
  • 哪里做公司网站wordpress 好用的插件
  • 乐彩网站源码网站建设微信小程序api怎么用
  • 信丰做网站常州设计网站
  • 网站结构怎么做适合优化上海公司建立网站吗
  • 提供郑州网站建设网络营销推广方案案例分析
  • 网站推广公司官网网站下载的软件在哪里找的到
  • wordpress付费制插件合肥专业网站优化
  • 网站策划与设计(微信怎么制作小程序?
  • 网页升级访问未成年自觉离开白城整站优化
  • 专业的内蒙古网站建设表情制作软件
  • 温州微网站制作公司哪家好专业开发小程序的公司
  • 衣柜 技术支持 东莞网站建设秦皇岛城市建设网
  • 二手交易网站建设方案ppt长沙营销推广公司
  • 网站管理助手哪个好用栾川网站开发
  • 深圳网站建设公司设计抖音电商具体是做什么的
  • 建设搜索引擎友好的网站西安做网站的公司哪家好
  • 免费网站建设可信赖阿里云个人网站建设书
  • 南京网站的优化网站的基础建设