根据这个答案,我们需要知道ios的版本.如何使用libgdx的robovm后端实现它?
我对获取在 libgdx 之上开发的应用程序版本(以及在 ios 的 robovm 上)有一些疑问
我想获取版本信息
android:versionName
标签中声明的AndroidManifest.xml
app.version
的 key中声明的。robovm.properties
(我相信,它最终会被替换为CFBundleShortVersionString
key in的值Info.plist.xml
)我的第一个问题是,libgdx 是否提供了一种独立于平台的方法来获取应用程序版本?(我找不到任何)
如果没有,我找到了在 Android 上获取应用程序版本的答案,那没关系。为 IOS找到了相同的答案,但以本机方式。我如何使用 robovm 后端做同样的事情?
我有两个简单的课程.
public class A { }
public class B { }
Run Code Online (Sandbox Code Playgroud)
我C
像下面一样构建和实例化类.
var assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName("Some.Namespace"), AssemblyBuilderAccess.Run);
var moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyBuilder.GetName().Name);
// public class C
var typeBuilder = moduleBuilder.DefineType("C", TypeAttributes.Public | TypeAttributes.Class, typeof(object));
// public A A;
var aField = typeBuilder.DefineField("A", typeof(A), FieldAttributes.Public);
// public C() { this.A = new B(); } !!!!
var ctorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.HasThis, Type.EmptyTypes);
var ctorIL = ctorBuilder.GetILGenerator();
ctorIL.Emit(OpCodes.Ldarg_0);
ctorIL.Emit(OpCodes.Newobj, typeof(B).GetConstructor(Type.EmptyTypes));
ctorIL.Emit(OpCodes.Stfld, aField);
ctorIL.Emit(OpCodes.Ret);
// return new C();
var type = typeBuilder.CreateType(); …
Run Code Online (Sandbox Code Playgroud) 我想在运行时获得一个类型的"数组类型".我不需要数组的实例,只需要Type.我目前使用以下方法.
private Type GetArrayType(Type elementType)
{
return Array.CreateInstance(elementType, 0).GetType();
}
Run Code Online (Sandbox Code Playgroud)
没有创建数组实例有没有更好的解决方案?
注意:我无法使用,Type.GetType(elementType.FullName + "[]")
因为我在运行时创建了元素类型Reflection.Emit
.根据MSDN,它需要将动态组件保存在磁盘上,我不想这样做.
有没有办法通过脚本更改/更新和删除/删除列描述?
我sp_addextendedproperty
用来添加描述,但它不允许更新.当我尝试使用相同的sp来更新现有的描述值时,它会说"描述属性已经存在"
改变或删除/创建类似的解决方案对我来说都是好的.
在有用的答案和评论之后,您可以在下面看到我的最终解决方案 可以帮助别人.
create procedure sp_set_column_description (
@schema varchar(256),
@table varchar(256),
@column varchar(256),
@description varchar(256))
as
begin
if exists (
select p.*
from
sys.extended_properties p,
sys.columns c,
sys.tables t,
sys.schemas s
where
t.schema_id = s.schema_id and
c.object_id = t.object_id and
p.major_id = t.object_id and
p.minor_id = c.column_id and
p.name = N'MS_Description' and
s.name = @schema and
t.name = @table and
c.name = @column
)
exec sys.sp_updateextendedproperty
@level0type=N'SCHEMA', @level0name=@schema,
@level1type=N'TABLE', @level1name=@table,
@level2type=N'COLUMN', @level2name=@column,
@name=N'MS_Description', @value=@description
else …
Run Code Online (Sandbox Code Playgroud) 我有
在我的图形和下面的查询中导致"Java堆空间"错误.
match (p1:Post)-[r1:TAGGED]->(t:Tag)<-[r2:TAGGED]-(p2:Post)
return p1.Title, count(r1), p2.Title, count(r2)
limit 10
Run Code Online (Sandbox Code Playgroud)
根据共享标签的数量,我期望的是一些重复的行.我不确定如何limit
工作(在前10个帖子或标签后停止).但是,因为我limit 10
没有想到这个查询遍历所有图形.看起来确实如此.
通过一些更改,Christophe Willemsen的查询在15秒内返回10行.
// I need label for the otherPost because Users are also TAGGED
MATCH (post:Post)-[:TAGGED]->(t)<-[:TAGGED]-(otherPost:Post)
RETURN post.Title, count(t) as cnt, otherPost.Title
// ORDER BY cnt DESC // for now I do not need this
LIMIT 10;
Run Code Online (Sandbox Code Playgroud)
我认为"ORDER BY"子句可能会导致遍历所有可能的路径,因此我删除了该子句但它仍然是15秒.这也是15秒.当我在没有排序的情况下使限值1或1000.
我对Neo4j的期望是:"从任何Post
节点开始,然后跳转到其标签,找到标记有相同标签的其他邮件.当有10个发现停止遍历并返回结果时." 我很确定它没有这样做.
为了明确我的期望,假设图表很小,我们Limit 3
在cypher查询中使用.
p1 - [t1, t2, t3] // Post1 is tagged with …
Run Code Online (Sandbox Code Playgroud) 我有以下测试用例,只有第一个断言通过.为什么?
@Test
public void test() {
String i1 = "i";
String i2 = "?".toLowerCase();
System.out.println((int)i1.charAt(0)); // 105
System.out.println((int)i2.charAt(0)); // 105
assertTrue(i2.startsWith(i1));
assertTrue(i2.endsWith(i1));
assertTrue(i1.endsWith(i2));
assertTrue(i1.startsWith(i2));
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用startsWith
并endsWith
以不区分大小写的方式使得下面的表达式应该返回true.
"AL?".toLowerCase().endsWith("i");
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个GenericEFRepository,它将被其他存储库使用.我有一个Save方法如下.
public virtual void Save(T entity) // where T : class, IEntity, new() And IEntity enforces long Id { get; set; }
{
var entry = _dbContext.Entry(entity);
if (entry.State != EntityState.Detached)
return; // context already knows about entity, don't do anything
if (entity.Id < 1)
{
_dbSet.Add(entity);
return;
}
var attachedEntity = _dbSet.Local.SingleOrDefault(e => e.Id == entity.Id);
if (attachedEntity != null)
_dbContext.Entry(attachedEntity).State = EntityState.Detached;
entry.State = EntityState.Modified;
}
Run Code Online (Sandbox Code Playgroud)
您可以在以下代码的评论中找到问题
using (var uow = ObjectFactory.GetInstance<IUnitOfWork>()) // uow is implemented like EFUnitOfWork …
Run Code Online (Sandbox Code Playgroud) 下面的方法编译很好.
string DoSomething(int x) {
string s;
if(x < 0)
s = "-";
else if(x > 0)
s = "+";
else
return "0";
return DoAnotherThing(s);
}
Run Code Online (Sandbox Code Playgroud)
但是当我在foreach
循环中编写相同的代码并使用yield return
而不是return
我得到Use of unassigned local variable 's'
编译错误.
// Causes compile error
IEnumerable<string> DoSomethingWithList(IEnumerable<int> xList) {
foreach(var x in xList) {
string s;
if(x < 0)
s = "-";
else if(x > 0)
s = "+";
else
yield return "0";
// COMPILE ERROR: Use of unassigned local …
Run Code Online (Sandbox Code Playgroud)