我有一个复杂的对象,它作为字符串存储在文本文件中
这是我从文本文件中读取的数据
[
{
name: "V",
number: 20,
coords: {
"cn": {
points: [
[23,32,32],
[32,32,32]
],
B: "VC",
label: "ds"
}
}
}]
Run Code Online (Sandbox Code Playgroud)
我想将其转换为 JSON 字符串
注意:-我无法使用 eval 函数我已经尝试过这个 JSON.stringify 但我得到了这个输出:-
" [\r\n {\r\n name: \"V\",\r\n number: 20,\r\n coords: {\r\n \"cn\": { \r\n points: [\r\n [23,32,32],\r\n [32,32,32]\r\n ], \r\n B: \"VC\", \r\n label: \"ds\"\r\n }\r\n }\r\n }]"
Run Code Online (Sandbox Code Playgroud) 假设我为巨大数组的每个元素创建了一个箭头函数
someHugeArray.forEach(record => {
const someValues = [...getAnotherHugeArray()]
const sum = _.sumBy(someValues, 'total')
record.getPrice = () => sum / record.quantity
})
Run Code Online (Sandbox Code Playgroud)
这只是一个例子......所以在getPrice创建的环境中,我们有一个巨大的数组someValues,我们使用它,但实际上getPrice我们不再需要它,因为我们获得了所需的值并将其保存到sum.
用代码破坏它的价值有用吗
someValues = null
Run Code Online (Sandbox Code Playgroud)
或者 javascript 引擎足够聪明,不会将函数的词法环境的值保留在内存中,它不使用它?
我有一个带有 2 个类型参数的案例类
case class Relation[T <: Model, RT] (model: T)
Run Code Online (Sandbox Code Playgroud)
类型 T 显然是一种类属性“模型”。类型 RT 可以与 T 相同,也可以是 List[T](取决于我们创建 OneToOne 或 OneToMany 的关系类型)。那么我如何限制 RT,它不允许传递除 T 或 List[T] 之外的其他内容。
PS 我正在阅读有关covariance和contravariance 的内容,但不太了解。它适用于我的情况吗?如果是,请您举例说明。如果没有 - 那么请展示其他工具来达到它。我什至无法理解 T 和 List[T] 是如何相互关联的?T <: List[T] 或 List[T] <: T?
提前致谢
我有一个简单的代码
private def convertFieldsNames (fieldsNames: Array[String]): Array[String] =
fieldsNames.map(convertFieldName)
private def convertFieldName (fieldName: String): String = s"!!! $fieldName"
val res = convertFieldsNames(Array("123", "456"))
res.map(println)
Run Code Online (Sandbox Code Playgroud)
它工作正常,但是当我添加类型转换功能时,我将在其他功能中使用
implicit def fromStringToEitherStringOrArray (str: String): Either[String, Array[String]] = Left(str)
implicit def fromArrayToEitherStringOrArray (arr: Array[String]): Either[String, Array[String]] = Right(arr)
Run Code Online (Sandbox Code Playgroud)
我一行出现错误
fieldsNames.map(convertFieldName)
type mismatch;
found : String => String
required: Array[String] => ?
Run Code Online (Sandbox Code Playgroud)
我希望这些转换仅在需要转换为Either值时才会生效,所以我无法理解为什么此错误在根本没有Either类型的行中冒出
我有一个带有函数的简单代码,它获取weakTypeOf case 类并返回其字段,可以预见我们得到2 个项目列表
def getMembers[T: WeakTypeTag] =
weakTypeOf[T].members.filterNot(_.isMethod).toList
final case class Person(name: String, age: Int) extends Models
val fields = getMembers[Person]
println(fields.length) // 2
Run Code Online (Sandbox Code Playgroud)
它工作正常
但是,如果我想在创建子对象类时从将 Person 作为类型参数传递的 trait 中获取成员呢?(WeakTypeTag 在构建过程中无法传递给 trait)
trait ModelManager[CCT] {
def getMembers: List[String] = ???
}
case object PersonManager extends ModelManager[Person]
val fields = PersonManager.getMembers
println(fields.length)
Run Code Online (Sandbox Code Playgroud)
有没有办法从 CCT 参数中获取 weakTypeOf ?
在反应中我写
useEffect(() => {
fetch("https://ozencalc.ru", {
method: "POST",
headers: {
'Accept': 'application/json',
"Content-Type": "application/json"
},
body: JSON.stringify({
action: "operations-update"
})
})
.then((res) => {
return res.json();
})
.then((res) => alert(res));
}, []);
Run Code Online (Sandbox Code Playgroud)
所以我将一个对象作为主体发送,并期望在我编写的 php 服务器上读取它
echo json_encode($_POST);
Run Code Online (Sandbox Code Playgroud)
但我得到一个空数组而不是带有键“action”的对象
php 服务器变量 $_POST 不包含值的原因是什么
[
"action" => "operations-update"
]
Run Code Online (Sandbox Code Playgroud)
可能是一些托管服务器问题或者我误解了 php 的工作原理?