我写了这样的课:
class Test
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
public List<String> Strings { get; set; }
public Test()
{
Strings = new List<string>
{
"test",
"test2",
"test3",
"test4"
};
}
}
Run Code Online (Sandbox Code Playgroud)
和
internal class DataContext : DbContext
{
public DbSet<Test> Tests { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
运行代码后:
var db = new DataContext();
db.Tests.Add(new Test());
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
我的数据正在保存但只是保存Id.我没有任何表格,也没有适用于字符串列表的关系.
我究竟做错了什么?我也尝试制作字符串, virtual但它没有改变任何东西.
谢谢您的帮助.
如何编写while循环模拟的函数?它应该有2个参数:要执行的条件和表达式.
我尝试了以下方法:
val whileLoop: (Boolean,Any)=>Unit = (condition:Boolean, expression:Any) => {
expression
if(condition) whileLoop(condition,expression)
() }
Run Code Online (Sandbox Code Playgroud)
但似乎它不起作用,例如我有数组:
val arr = Array[Int](-2,5,-5,9,-3,10,3,4,1,2,0,-20)
Run Code Online (Sandbox Code Playgroud)
我也有变量i:
var i = 0
Run Code Online (Sandbox Code Playgroud)
我想打印arr的所有元素.我可以使用以下代码执行此操作:
while(i<arr.length) { println(tab(i)); i+=1 }
Run Code Online (Sandbox Code Playgroud)
我想使用我的whileLoop函数做同样的事情.但我不能写参考变量的功能并修改它.我可以使用只有一个元素的数组传递它,例如
val nr = Array(0)
Run Code Online (Sandbox Code Playgroud)
和功能:
val printArray: Array[Int]=>Unit = (n:Array[Int]) => {
println(arr(n(0)))
n(0)+=1
()
}
Run Code Online (Sandbox Code Playgroud)
然后在我的whileLoop中使用:
whileLoop(nr(0)<arr.length, printArray)
Run Code Online (Sandbox Code Playgroud)
使用上面的代码后,我得到StackOverflowError,nr(0)等于零.还有以下功能:
val printArray: Array[Int]=>Unit = (n:Array[Int]) => {
println(arr(nr(0)))
nr(0)+=1
()
}
Run Code Online (Sandbox Code Playgroud)
给出相同的结果.
如何在whileLoop中编写正确的函数并使用它来打印所有arr元素?
提前感谢您的建议.
我正在使用OCaml.我有类型:
type 'a bt = Empty | Node of 'a * 'a bt * 'a bt;;
Run Code Online (Sandbox Code Playgroud)
我也有BST的例子:
let tree = Node(1,Node(2,Node(4,Empty,Empty),Empty),Node(3,Node(5,Empty,Node(6,Empty,Empty)),Empty));
Run Code Online (Sandbox Code Playgroud)
我需要编写函数:breadthBT : 'a bt -> 'a list这将是广度优先搜索遍历.对于上面的示例树,它应该返回[1; 2; 3; 4; 5; 6]
怎么写那个功能?我只能编写以下使用DST的功能:
let rec breadthBT tree =
if tree=Empty then []
else let Node(w,l,r)=tree in (w::breadthBT l)@breadthBT r;;
Run Code Online (Sandbox Code Playgroud)
上面的函数返回(例如树)[1; 2; 4; 3; 5; 6].但我不能写使用BFS的功能.你可以帮帮我吗?
我想在Scala中创建通用(不变)方法,该方法将元素从源列表复制到目标列表.在Java中,java.util.Collections中有copy方法(参见http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#copy%28java.util.List, %20java.util.List%29).我知道在Scala List中是不可变对象所以我想创建并返回新列表.
我写了以下代码:
def copy[T](dest:List[T], src:List[T]):List[T] = {
if(dest.length<src.length) throw new Exception("IndexOutOfBoundsException")
else if(src==Nil) dest
else {
var ret = dest
ret = dest.updated(0, src.first)
var i=1
val f:(T=>Unit) = a => {
if(i<src.length) ret=ret.updated(i, src(i))
i+=1
()
}
dest.foreach(f)
ret
}
}
Run Code Online (Sandbox Code Playgroud)
但我认为它可以写得更好.你能帮我写出更好的代码吗?提前致谢.
编辑:也许我表达不清楚我想做什么.我有两个列表(scala.collection.immutable.List),例如src(length = x)和dest(length = y> = x).我想用src列表中的元素替换dest列表的前x个元素.