我有一个像下面这样的通用方法
private fun <T> getSomething(): T {
return "something" as T
}
Run Code Online (Sandbox Code Playgroud)
如何使用变量T类型调用此方法?
val types = arrayListOf<Type>(String::class.java, Boolean::class.java)
types.forEach { type ->
val something = getSomething<type>() // Unresolved reference: type
}
Run Code Online (Sandbox Code Playgroud)
在运行时,我不知道什么是泛型类型T。我正在获取类型,types并且应该使用泛型getSomething方法传递它。
我想调用有几个表的数据库。示例模型是这样的
class User{
}
class Student{
}
Run Code Online (Sandbox Code Playgroud)
由于所有调用查询基本相同,因此我想拥有调用数据库和获取数据的通用方法。
private fun <T> getData(model: String): List<T>?{
return when(model){
"user" -> getUsers()
"student" -> getStudents()
else -> null
}
}
Run Code Online (Sandbox Code Playgroud)
所以当我调用上面的方法时。在我环路我想传递Type的任何User或Student。
val types = arrayListOf<Type>(User::class.java, Student::class.java) …Run Code Online (Sandbox Code Playgroud) 我有多个PowerQuery查询,我想在Excel文件中提供单元格的值.在此特定情况下,源文件名的完整路径.
有什么方法可以把它变成PowerQuery吗?
注意:此问题的摘要已在PowerShell GitHub存储库中发布,因为已被此更全面的问题所取代.
传递给PowerShell中的命令的参数在参数模式下进行解析(与表达式模式相反- 请参阅参考资料Get-Help about_Parsing).
方便地,(双)引用不包含空格或元字符的参数通常是可选的,即使这些参数涉及变量引用(例如$HOME\sub)或子表达式(例如,version=$($PsVersionTable.PsVersion).
在大多数情况下,这些不带引号的参数被视为双引号字符串,并且通常的字符串插值规则适用(除了元字符,例如,需要转义).
我试图在这个答案中总结参数模式中未加引号的标记的解析规则,但是有一些奇怪的边缘情况:
具体来说(从Windows PowerShell v5.1开始),为什么以下每个命令中的未加引号的参数标记不被识别为单个可扩展字符串,并导致传递2个参数(变量reference/subexpression保留其类型) ?
$(...)在令牌的开头:
Write-Output $(Get-Date)/today # -> 2 arguments: [datetime] obj. and string '/today'
Run Code Online (Sandbox Code Playgroud)
请注意,以下工作符合预期:
Write-Output $HOME/sub - 简单的var.一开始就参考Write-Output today/$(Get-Date) - 子表达式不是一开始.$在令牌的开头:
Write-Output .$HOME # -> 2 arguments: string …Run Code Online (Sandbox Code Playgroud)我是Hadoop的新手.我想从mapper类的map函数中的main函数(Java程序)访问命令行参数.请建议如何做到这一点.
我通过这种方式绑定到服务:
活动类:
ListenLocationService mService;
@Override
public void onCreate(Bundle savedInstanceState) {
...
Intent intent = new Intent(this, ListenLocationService.class);
intent.putExtra("From", "Main");
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
...
}
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className,
IBinder service) {
LocalBinder binder = (LocalBinder) service;
mService = binder.getService();
}
public void onServiceDisconnected(ComponentName arg0) {
}
};
Run Code Online (Sandbox Code Playgroud)
这是onBind我服务的方法:
@Override
public IBinder onBind(Intent intent) {
Bundle extras = intent.getExtras();
if(extras == null)
Log.d("Service","null");
else
{
Log.d("Service","not null");
String from = …Run Code Online (Sandbox Code Playgroud) 是否可以传入一个字符串流并让函数直接写入?
我记得我看到一个类似于这样的函数被调用:
my_func(ss << "text" << hex << 33);
Run Code Online (Sandbox Code Playgroud) 我的问题:
#!/bin/bash
function testFunc(){
echo "param #1 is :" $1
echo "param #2 is :" $2
}
param1="param1"
param2="param2"
testFunc $param1 $param2
Run Code Online (Sandbox Code Playgroud)
这样输出是:
param #1 is : param1
param #2 is : param2
Run Code Online (Sandbox Code Playgroud)
但是当我将param1设置为空字符串时:
param1=""
Run Code Online (Sandbox Code Playgroud)
然后输出如下:
param #1 is : param2
param #2 is :
Run Code Online (Sandbox Code Playgroud)
我想问题是当第一个参数为空时,它没有被声明,所以它实际上不会作为函数参数传递.
如果这是问题,那么有没有办法在bash中声明变量"空字符串",或者是否有任何解决方法来获得预期的行为?
注意:如果我调用这样的函数,它按预期工作:
testFunct "" $param2
Run Code Online (Sandbox Code Playgroud)
但我想保持代码清洁.
更新:
我最近发现-u了一个标志,如果即将使用未绑定的变量,它会引发错误.
$ bash -u test.sh
param #1 is : param1
test.sh: line 5: $2: unbound variable
Run Code Online (Sandbox Code Playgroud) 我理解使用std :: string_view的动机;
它可以帮助避免函数参数中的不必要的分配.
例如:
以下程序将从std::string字符串文字创建一个.
这会导致不希望的动态分配,因为我们只对观察字符感兴趣.
#include <iostream>
void* operator new(std::size_t n)
{
std::cout << "[allocating " << n << " bytes]\n";
return malloc(n);
}
void observe_string(std::string const& str){}
int main(){
observe_string("hello world"); //prints [allocating 36 bytes]
}
Run Code Online (Sandbox Code Playgroud)
使用string_view将解决问题:
#include <iostream>
#include <experimental/string_view>
void* operator new(std::size_t n)
{
std::cout << "[allocating " << n << " bytes]\n";
return malloc(n);
}
void observe_string(std::experimental::string_view const& str){
}
int main(){
observe_string("hello world"); //prints nothing
}
Run Code Online (Sandbox Code Playgroud)
这给我留下了一个问题. …
public static <T> void func1(T[][] arr) {
...
}
Run Code Online (Sandbox Code Playgroud)
public static <T> void func2(T[] arr) {
...
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试传递一个二维数组int[][] arr.
我不能使用func1(arr),但我可以使用func2(arr)
谁能解释一下这是如何工作的?
public class helloworld {
public static void main(String[] args) {
String text = "Hello World";
l(text);
int n = 0;
l("--------------------------");
l(n);
}
public static void l(Object obj) {
System.out.println(obj);
}
}
Run Code Online (Sandbox Code Playgroud)
我用Java编写了这个简单的程序,它起作用了.现在我很困惑,如果所有的数据类型(int,char,double等)来下的Object,那么为什么我们指定我们希望,当我们值传递给接受哪种数据类型?
我的意思是我们总是可以使用Object函数中使用的数据类型l.是否有一个特定的原因,人们不总是使用Object他们的数据类型来传递值?
java ×3
c++ ×2
generics ×2
string ×2
android ×1
bash ×1
binding ×1
excel ×1
function ×1
hadoop ×1
kotlin ×1
m ×1
mapreduce ×1
methods ×1
parameters ×1
powerquery ×1
powershell ×1
service ×1
stl ×1
string-view ×1
stringstream ×1
syntax ×1
variables ×1