Scala中怎么实现变高变宽

发布时间:2021-12-09 09:53:56 作者:iii
来源:亿速云 阅读:124

这篇文章主要讲解了“Scala中怎么实现变高变宽”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Scala中怎么实现变高变宽”吧!

展示在代码10.11中的Element的版本并不完全,因为他不允许客户把不同宽度的元素堆叠在一起,或者不同高度的元素靠在一起。比方说,下面的表达式将不能正常工作,因为组合元素的第二行比***行要长:

new ArrayElement(Array("hello")) above  new ArrayElement(Array("world!"))

与之相似的,下面的表达式也不能正常工作,因为***个ArrayElement高度为二,而第二个的高度只是一:

new ArrayElement(Array("one", "two")) beside  new ArrayElement(Array("one"))

代码10.13展示了一个私有帮助方法,widen,能够带个宽度做参数并返回那个宽度的Element。结果包含了这个Element的内容,居中,左侧和右侧留需带的空格以获得需要的宽度。代码10.13还展示了一个类似的方法,heighten,能在竖直方向执行同样的功能。widen方法被above调用以确保Element堆叠在一起有同样的宽度。类似的,heighten方法被beside调用以确保靠在一起的元素具有同样的高度。有了这些改变,布局库可以待用了。

import Element.elem  abstract class Element {   def contents: Array[String]   def width: Int = contents(0).length   def height: Int = contents.length   def above(that: Element): Element = {    val this1 = this widen that.width    val that1 = that widen this.width    elem(this1.contents ++ that1.contents)   }   def beside(that: Element): Element = {    val this1 = this heighten that.height    val that1 = that heighten this.height    elem(     for ((line1, line2) < - this1.contents zip that1.contents)     yield line1 + line2    )   }   def widen(w: Int): Element =    if (w < = width) this   else {     val left = elem(' ', (w - width) / 2, height)     var right = elem(' ', w – width - left.width, height)     left beside this beside right    }   def heighten(h: Int): Element =    if (h < = height) this   else {     val top = elem(' ', width, (h - height) / 2)     var bot = elem(' ', width, h – height - top.height)     top above this above bot   }   override def toString = contents mkString "\n" }

代码 10.13 有了widen和heighten方法的Element

感谢各位的阅读,以上就是“Scala中怎么实现变高变宽”的内容了,经过本文的学习后,相信大家对Scala中怎么实现变高变宽这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. kotlin中的高级特性--协变与逆变(反变)
  2. .Net--协变、逆变

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

scala

上一篇:PostgreSQL Template模板怎么用

下一篇:HBase读性能优化的方法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》