这似乎不起作用:
from typing import NewType
MyStr = NewType("MyStr", str)
x = MyStr("Hello World")
isinstance(x, MyStr)
Run Code Online (Sandbox Code Playgroud)
我什至不明白False,但TypeError: isinstance() arg 2 must be a type or tuple of types因为MyStr是一个函数并且isinstance需要一个或多个type。
甚至assert type(x) == MyStr失败is MyStr。
我究竟做错了什么?
我正在尝试将 API 调用从静态 Web 应用程序重定向到另一个函数应用程序,但我无法使用通配符。
路线匹配正确,但我希望该*部分包含在重定向中。这是我的一个例子staticwebapp.config.json
{
"route": "/api/client/*",
"redirect": "https://xx.yy.net/api/client/*"
}
Run Code Online (Sandbox Code Playgroud)
我希望请求/api/client/customer/get?customerId=xx成为https://xx.yy.net/api/client/customer/get?customerId=xx.
但无论我尝试什么,它都只是硬路由到我在重定向中放入的内容。通过代理,这可以通过函数实现,但我无法在静态 Web 应用程序中找到方法。
它有一种优雅的方式来在 scalaIterable[A]集合上进行模式匹配,检查它是否为空,它是否只包含一个元素(并获取它),它是否恰好包含 N 个元素(并获取它们),如果它包含至少一个或更多元素(并得到它或它们),等等。
随着List它的琐碎,但我没能有同等Iterable的工作。
我有一组复杂的特征和案例类,但为了讨论起见,让我总结一下我试图以这种方式建模的内容:
case class X(x: X)
Run Code Online (Sandbox Code Playgroud)
这很好,直到我最终以这种方式初始化其中一个实例:
val myX: X = X(myX)
Run Code Online (Sandbox Code Playgroud)
它编译(令人难以置信),但myX传递给构造函数的实际上是null,通过myX.x事后检查很容易看到。
假设有一个指向自身的实例对于我要建模的内容来说很好,是否有一种优雅的方法来解决这个问题并让新实例X指向自身?我的意思是没有在创建后改变对象,也没有引入不带参数并this在内部使用的第二个构造函数。请记住,实际情况比这里描述的要复杂。