是否可以在 lambda 闭包中隐藏变量?

2023-11-21

我正在尝试在 Kotlin 中创建一个类型安全的 Groovy 风格构建器,就像它所描述的那样here。 问题是嵌套 lambda 中 lambda 接收器的可见性。 这是一个简单的例子。

html {
    head(id = "head1")
    body() {
        head(id = "head2")
    }
}

嵌套 lambda 的接收者是没有“head”方法的 Body。尽管如此,这段代码编译并打印如下:

<html>
    <head id="head1"></head>
    <head id="head2"></head>
    <body></body>
</html>

这是预料之中的,但是有什么办法可以让内部头出现编译错误吗?


从 Kotlin 1.0 开始,这是不可能的。有一个打开功能请求对于此功能。

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

是否可以在 lambda 闭包中隐藏变量? 的相关文章

随机推荐

  • 如何将科学记数法转换为小数形式?

    虽然很基本 但我在任何地方都找不到答案 如何禁用小标题中的科学记数法 并让小标题显示小数 My data 我有一个简单的小题 结果是lm gt broom tidy library tidyverse I used dput to get
  • 每侧有 2 个 y 轴且比例不同的 ggplot

    我需要在一个图表中绘制一个显示计数的条形图和一个显示比率的折线图 我可以单独完成这两个图表 但是当我将它们放在一起时 我会缩放第一层 即geom bar 与第二层重叠 即geom line 我可以移动轴吗geom line向右 Answer
  • 屏蔽 CALayer - iPhone

    我正在为 iPhone 创建一个自定义开 关切换开 关 类似于标准开关 并且我正在设置滑块的蒙版 但调用 myView layer setMask maskLayer 设置遮罩层相对于其遮罩层的位置 而不是相对于遮罩层的容器层的位置 对于这
  • 如何让 raw_input 重复直到我想退出?

    说我想用raw input像这样 code raw input Please enter your three letter code or a blank line to quit under if name main 如何让它在每次运行
  • 如何从头开始构建具有人类可读角度的旋转矩阵?

    一直阻碍我进行 3D 编程的一件事是无法理解数学是如何运作的 我可以使用方法和函数在编程流程中很好地遵循数学 那么对我来说一切都清晰且合乎逻辑 但在数学符号中 我只是无法从中得到正面或反面 我一直在阅读网站 观看一些机构的视频试图解释这一点
  • 正则表达式删除多行注释

    我正在尝试使用这个正则表达式 JS g 取代 sdandsads 什么也没有 但它不起作用 为什么 o O 点捕获除换行符之外的所有内容 如果 dotall 为 false 所以要么使用 dotall 正如其他答案 评论中提到的 这在 ja
  • Android:折叠线性布局而不是折叠工具栏

    我正在尝试在单个片段中创建主 详细信息事务 我考虑使用 LinearLayout 作为标题的编辑文本的容器 然后是 RecyclerView 了解详细信息 如何实现类似于 CollapsingToolbar 效果的 LinearLayout
  • Kibana 报告字段存在冲突,我该如何解决?

    在 Kibana 中 我注意到在刷新索引模式后 我的一个字段显示为conflicted Example 所以我知道这是因为 Elastic Search 在该字段中发现了不同类型的值 我如何确定这一点 它导致我的视 觉效果破坏 因为它们无法
  • C# 两组排序数字最快的交集

    我正在应用程序的时间关键部分计算两组排序数字的交集 这个计算是整个应用程序的最大瓶颈 所以我需要加快它的速度 我已经尝试了很多简单的选项 目前正在使用这个 foreach var index in firstSet if secondSet
  • 如何理解 Yahoo! 的原始 HTML使用Python检索数据时的财务?

    我一直在尝试从 Yahoo 检索股票价格 金融 比如苹果公司 我的代码是这样的 使用Python 2 import requests from bs4 import BeautifulSoup as bs html http finance
  • 获取不带 Content-Disposition 的文件名

    我几天来一直在寻找这个问题的解决方案 但找不到任何解决方案 我想使用网络客户端从网络服务器下载文件 下载工作正常 但我无法获得真实的文件名 这对我来说非常重要 我在很多主页上看到 文件名应该保存在 Content Disposition H
  • Android 不使用 XML 指定像素单位(如 sp、px、dp)

    是否可以在代码中指定像素单位 我的意思是 假设我有一个布局 并且我希望大小为 20dp 那么有什么方法可以在不编写布局 xml 的情况下做到这一点 在一个视图中 DisplayMetrics metrics getContext getRe
  • 全屏视频无黑边

    我遇到的问题是 视频总是在侧面或顶部 底部出现黑条 具体取决于屏幕尺寸 知道如何让它始终全屏显示而不显示恼人的黑条吗 并且不使用插件 这是我的标记 div div class box iframe box width 1280 height
  • 使用 java 在 Selenium WebDriver 中垂直向下滚动和向上滚动

    有人可以帮我自动化吗向下滚动功能 with 网络驱动程序 using Java 就我而言 对于雅虎邮件 Sign In 正在显示 visible 一旦我垂直向下滚动鼠标 滚动到页面的某个元素 JavascriptExecutor drive
  • 通过替换求解递推式 T(n) = 2T(n/2) + θ(1)

    所以我很确定它是 O n 但也可能不是 但是如何通过替换来解决它 如果假设 T n 首先 我想清楚地假设 1 k 某个常数 接下来 继续使用替换法 我们得到 T n 2T n 2 1 2T n 2 k 2 2T n 4 k k 4T n 4
  • selenium.common.exceptions.SessionNotCreatedException:消息:无法通过 Selenium 找到与 Firefox 46 匹配的功能集

    我这里肯定有一些版本不匹配 因为我无法使用 Python 来启动 Selenium 来启动 Firefox Web 浏览器 我使用旧版本的 Firefox 因为这里的其他人都使用相同的旧版本 Python 并且对他们来说旧版本的 Firef
  • 什么是函数 __tcf_0? (使用gprof和g++时看到)

    我们使用 g 4 2 4 我试图找出代码中的一些性能问题 我正在运行 gprof 来生成配置文件 并且我得到以下 奇怪的信息 因为最昂贵的函数是 tcf 0 Each sample counts as 0 01 seconds cumula
  • 如何从 std::ifstream 将文件读入 unsigned char 数组?

    所以通常我会做这样的事情 std ifstream stream int buff length 8192 boost shared array
  • 从 json 对象创建一个强类型的 C# 对象,ID 作为名称

    我正在尝试使用一家知名在线会议提供商的 API 他们的 API 调用之一返回一个如下所示的对象 5234592 pollsAndSurveys questionsAsked 1 surveyCount 0 percentageSurveys
  • 是否可以在 lambda 闭包中隐藏变量?

    我正在尝试在 Kotlin 中创建一个类型安全的 Groovy 风格构建器 就像它所描述的那样here 问题是嵌套 lambda 中 lambda 接收器的可见性 这是一个简单的例子 html head id head1 body head