我有一个NSButton(按钮),在Interface Builder/Xcode中内置了一些临时标题文本.在其他地方,按钮内的标题文本以编程方式更改为未知长度的字符串(实际上,多次到许多不同的长度).
我希望按钮能够自动调整大小(具有固定的右侧位置 - 因此它向左延伸)以适合以编程方式插入的任何长度的字符串作为按钮文本.但我无法弄明白.有什么建议?提前致谢!
在学习无形的同时,我想知道为什么这不能编译:
def someHList[H <: HList]: H = HNil
Run Code Online (Sandbox Code Playgroud)
既然HNil对象扩展了扩展HList的HNil特征?
在trait中定义一个方法的正确方法是什么,它返回一些HList,它只在扩展类中实现?
我想做类似以下的事情:
trait Parent {
def someHList[H <: HList]: H
}
object Child1 extends Parent {
def someHList[H <: HList] = HNil
}
object Child2 extends Parent {
def someHList[H <: HList] = 1 :: "two" :: HNil
}
Run Code Online (Sandbox Code Playgroud)
任何建议表示赞赏.谢谢!
编辑
详细阐述,因为我意识到我在原始问题中未说明的内容:
1.)希望不必H
在每个实现类中明确指定,而是推断它(在调用站点?).
2.)我想在父特征中使用HNil作为默认实现,可以选择在子类中重写.我的例子应该是:
trait Parent {
def someHList[H <: HList]: H = HNil
}
object Child extends Parent {
override def someHList[H <: HList] = 1 :: "two" …
Run Code Online (Sandbox Code Playgroud) 我在PHP中有一个数组数组,我想在容器数组中访问每个数组的变量名(作为字符串).
有:
$container = array($array1, $array2, $array2);
Run Code Online (Sandbox Code Playgroud)
需要:
foreach ($container as $anArray) {
{...some other code...}
echo variable_name($anArray); // output: array1 array2 array3
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试运行foreach循环来输出每个数组的名称,其函数如下所示(在PHP手册中建议):
function vname(&$var, $scope=false, $prefix='unique', $suffix='value') {
if($scope) $vals = $scope;
else $vals = $GLOBALS;
$old = $var;
$var = $new = $prefix.rand().$suffix;
$vname = FALSE;
foreach($vals as $key => $val) {
if($val === $new) $vname = $key;
}
$var = $old;
return $vname;
}
Run Code Online (Sandbox Code Playgroud)
但是这个功能只能输出:anArray(x3)
我需要输出:array1 array2 array3
有什么建议?