我有一个查询。我有两个整数范围,例如100-500和600-800。这就是他们的样子:
范围1
start_range = 100
end_range = 500
范围2
start_range_new = 600
end_range_new = 800
我想要一个方法逻辑,我可以在其中匹配两个范围(范围1和范围2),这样这两个范围是完全排他的,这意味着这两个范围不相交。
如果两个范围相交,则将局部变量设为true
,如果不是,则局部变量应为false
。
答案 0 :(得分:8)
如果您使用Rails(或ActiveSupport),则可以使用Range#overlaps?
方法:
# Compare two ranges and see if they overlap each other
# overlaps?(1..5, 4..6) # => true
# overlaps?(1..5, 7..9) # => false
def overlaps?(one, another)
one.cover?(other.first) || other.cover?(one.first)
end
如果您不想使用ActiveSupport,可以将其自己实现为辅助功能:
echo \kartik\widgets\Select2::widget([
'attribute' => 'pembuatSoal_id',
'model' => $model,
'data' => array_merge(["" => ""], \yii\helpers\ArrayHelper::map(\app\models\ViewUsernameGuru::find()->all(), "uname", "nama")),
'options' => ['placeholder' => 'Pilih Guru...', 'id' => 'guru-id', 'class' => "form-control"],
'pluginOptions' => [
'allowClear' => true,
'theme' => \kartik\widgets\Select2::THEME_BOOTSTRAP
],
]);
答案 1 :(得分:4)
variable = !((start_range_new > end_range) || (start_range > end_range_new))
答案 2 :(得分:0)
a = (0..20)
b = (15..30)
def exclusive?(x,y)
return x.first > y.last || x.last < y.first
end
exclusive?(a,b) //False