<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[QUIK -> DDE &mdash; пишет bad argument #1 to 'insert' (table expected, got nil)]]></title>
		<link>https://quik2dde.ru/viewtopic.php?id=346</link>
		<atom:link href="https://quik2dde.ru/extern.php?action=feed&amp;tid=346&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «пишет bad argument #1 to 'insert' (table expected, got nil)».]]></description>
		<lastBuildDate>Wed, 05 May 2021 18:29:46 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: пишет bad argument #1 to 'insert' (table expected, got nil)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3088#p3088</link>
			<description><![CDATA[<div class="quotebox"><cite>BlaZed пишет:</cite><blockquote><p>Значению таблицы присвоить nil, конечно, можно, но это ж все равно что удалить элемент.<br />Другими словами, если мы присвоим значению таблицы nil, то потом никак не определим что присваивали что либо.</p></blockquote></div><p>Да, вы правы, есть такой момент в самом деле. Не обращал на него внимание.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Wed, 05 May 2021 18:29:46 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3088#p3088</guid>
		</item>
		<item>
			<title><![CDATA[Re: пишет bad argument #1 to 'insert' (table expected, got nil)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3087#p3087</link>
			<description><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>Если <strong>y</strong> (т.е. значение) равно nil - то это не проблема. Все работает корректно.</p></blockquote></div><p>Небольшое замечание.<br />Значению таблицы присвоить nil, конечно, можно, но это ж все равно что удалить элемент.<br />Другими словами, если мы присвоим значению таблицы nil, то потом никак не определим что присваивали что либо.<br /></p><div class="codebox"><pre><code>arr={}
arr[1]=3
arr[2]=nil
arr[3]=&quot;nil&quot;
for key,value in pairs(arr) do
  message(&quot;key=&quot;..tostring(key)..&quot; value=&quot;..tostring(value))
end</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (BlaZed)]]></author>
			<pubDate>Wed, 05 May 2021 13:58:17 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3087#p3087</guid>
		</item>
		<item>
			<title><![CDATA[Re: пишет bad argument #1 to 'insert' (table expected, got nil)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3086#p3086</link>
			<description><![CDATA[<div class="quotebox"><cite>kaliuga пишет:</cite><blockquote><p>table.insert(arr, 1, {[x] = y})</p><p>Когда y = 0 пишет bad argument #1 to &#039;insert&#039; (table expected, got nil</p></blockquote></div><p>Эта ошибка совсем не про <strong>nil</strong> в <strong>x</strong> или <strong>y</strong><br />Такая ошибка возникает в случае, когда arr не есть таблица. А до вызова указанной строки надо переменной arr присвоить таблицу (например, пустую).</p><p>Вот такой код уже не будет давать указанную ошибку (обратите внимание на первую строку <strong>arr = {}</strong>б в ней суть):</p><div class="codebox"><pre><code>arr = {}

x = 2
y = 1

table.insert(arr, 1, {[x] = y})</code></pre></div><p>Добавлю, что добавление в таблицу здесь можно сделать более простым синтаксисом, нежели <strong>table.insert</strong>, а именно:</p><div class="codebox"><pre><code>arr = {}

x = 2
y = 1

arr[x] = y</code></pre></div><br /><div class="quotebox"><cite>kaliuga пишет:</cite><blockquote><p>В одном операторе, с разных мест прилетает x и y, только одно значение может быть равно nil, пустое, но его надо учитывать.</p></blockquote></div><p>Если <strong>y</strong> (т.е. значение) равно nil - то это не проблема. Все работает корректно.</p><p>А вот если <strong>x</strong> равно nil - то тут да, проблема есть, т.к. индекс в таблице не может быть равен nil.<br />Я бы с таком случае предложил перед добавлением в таблицу таких значений (когда x равно nil) заменять его на какое-то &quot;нереальное&quot; значение, исходя из бизнес-логики. Ну например, если <strong>x</strong> может быть только положительным по идее в данной части кода - то можно добавить проверку перед вставкой в таблицу:</p><div class="codebox"><pre><code>if x == nil then
  x = -1
end</code></pre></div><p>Там, где потом из таблицы значения читаем (или проверяем наличие) - тоже не забыть такую подмену вставить.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Wed, 05 May 2021 10:54:02 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3086#p3086</guid>
		</item>
		<item>
			<title><![CDATA[Re: пишет bad argument #1 to 'insert' (table expected, got nil)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3085#p3085</link>
			<description><![CDATA[<div class="quotebox"><cite>kaliuga пишет:</cite><blockquote><p>Вопрос на засыпку, как подружится с nil в массиве?<br />В одном операторе, с разных мест прилетает x и y, только одно значение может быть равно nil, пустое, но его надо учитывать.</p><p>table.insert(arr, 1, {[x] = y})</p></blockquote></div><p>Значение элемента таблицы не может быть nil<br />Как вариант можно перевести nil в строку<br /></p><div class="codebox"><pre><code>if(y==nil)then y=&quot;nil&quot; end</code></pre></div><br /><div class="quotebox"><cite>kaliuga пишет:</cite><blockquote><p>Когда y = 0 пишет bad argument #1 to &#039;insert&#039; (table expected, got nil<br />Можно победить какнибудь?</p></blockquote></div><p>Тут непонятно, y=0 вполне приемлимо</p>]]></description>
			<author><![CDATA[null@example.com (BlaZed)]]></author>
			<pubDate>Mon, 03 May 2021 11:46:32 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3085#p3085</guid>
		</item>
		<item>
			<title><![CDATA[пишет bad argument #1 to 'insert' (table expected, got nil)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3084#p3084</link>
			<description><![CDATA[<p>Вопрос на засыпку, как подружится с nil в массиве?<br />В одном операторе, с разных мест прилетает x и y, только одно значение может быть равно nil, пустое, но его надо учитывать.</p><p>table.insert(arr, 1, {[x] = y})</p><p>Когда y = 0 пишет bad argument #1 to &#039;insert&#039; (table expected, got nil<br />Можно победить какнибудь?</p>]]></description>
			<author><![CDATA[null@example.com (kaliuga)]]></author>
			<pubDate>Sat, 01 May 2021 18:20:42 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3084#p3084</guid>
		</item>
	</channel>
</rss>
